Movement control method for mobile robot

ABSTRACT

A prediction model for predicting a mobile robot state is constructed to represent a state change of the mobile robot in a prediction interval of a predetermined duration; time-series data on a control input to ensure stability of the mobile robot is obtained in the prediction interval using a predetermined stability evaluation criterion and a constraint condition based on a mechanical balance; a center-of-gravity trajectory of the mobile robot is obtained based on the time-series data and prediction model; a slack variable for relaxing a constraint is introduced into a constraint condition; a slack variable is introduced into the stability evaluation criterion such that the variable becomes zero when a solution to a stable trajectory is obtained under the constraint condition and a slack variable value is generated when the trajectory diverges under the constraint condition; and positions of contact points are changed so as to cancel the generated value.

INCORPORATION BY REFERENCE

This application is based upon and claims the benefit of priority from Japanese patent application No. 2014-029793, filed on Feb. 19, 2014, the disclosure of which is incorporated herein in its entirety by reference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to a control of a mobile robot, and more particularly, to a trajectory generation technique for generating a trajectory that enables a mobile robot to move stably.

2. Description of Related Art

Robots having an autonomous movement function have been developed. A typical example of such robots is a legged robot which walks on two legs. Stable bipedal movement of a bipedal robot is achieved by trajectory generation and motion control using a ZMP (For example, Japanese Unexamined Patent Application Publication No. 2005-177884)

SUMMARY OF THE INVENTION

It is expected that future robots will work in various environments. For example, it is expected that service robots will work in the same living space as humans. It is considered that a bipedal walking ability is not sufficient to enable the robots to move in an environment such as a living space. For example, a state as shown in FIG. 1 is assumed to occur. Referring to FIG. 1, a table is placed near the wall and a bottle is placed at the back of the table near the wall. It is impossible for the robot to grip the bottle by using only bipedal walking. It is necessary for the robot to move while placing its hand(s) on the wall and the table and to stretch its hand(s) by inclining its body. Thus, the service robots need to have an ability to perform a motion while contacting the environment at a plurality of arbitrary points.

For convenience of the following description, the motion (movement) of the robot while contacting the environment at a plurality of arbitrary points is herein referred to as “multipoint contact movement”. (However, it cannot be said that a smooth multipoint contact movement can be achieved by the method disclosed in Japanese Patent No. 5034235, and the method has various problems. The details of this method will be described in exemplary embodiments of the invention).

When a service robot that can achieve the multipoint contact movement is put into practical use, it is essential to improve the stability of the robot. There is a need to take into account a case where the posture of the robot deviates from an assumed posture when the real robot is actually operated. The joints of the robot may not operate as instructed, or errors may accumulate. If the robot and humans are in the same space, the humans or objects might come into contact with the robot. If the hand(s) and foot (feet) of the robot land (hand(s) is(are) placed) on the planned positions even when the posture of the robot deviates from the assumed position due to some disturbances, it is obviously difficult for the robot to maintain its stability, with the result that the control of the robot fails (diverges). In other words, if the hand(s) and foot (feet) of the robot land as planned even when the center of gravity of the robot begins to incline from the assumed position, the center of gravity further inclines.

When the posture of the robot deviates from the assumed position, it is possible to change the landing points from the planned points, to thereby maintain the stability of the center of gravity. There are some known techniques for enabling bipedal robots to improve their stability by changing the landing position of an idling leg, that is, techniques to prevent bipedal robots from overturning by changing the planned landing position (for example, Japanese Patent No. 3269852).

Most of the related art techniques for stabilizing humanoid robots relate to stabilization of bipedal walking. Up to now, few techniques have been developed to deal with the multipoint contact movement. It can be said that bipedal walking is a type of the multipoint contact movement, because bipedal walking is an operation in which the robot moves while switching from a single-foot state to a both-feet state and vice versa. However, there is a large difference between the technique for bipedal walking and the technique for multipoint contact movement. Many of the bipedal walking techniques (typified by ZMP) are based on the premise that contact points (for example, the left foot and the right foot of a two-leg robot) are included in the same plane (as disclosed in, for example, paragraph 0012 of Japanese Patent No. 5034235). Specifically, in the ZMP control, only two-dimensional information in the original six-dimensional force/moment can be expressed, and thus the transition of only an extremely limited contact state can be treated. In the related art stabilization techniques based on the ZMP, the case of the multipoint contact movement cannot be solved in principle. In other words, there has been no technique for “improving the stability by changing positions of contact points, as needed, while performing a multipoint contact movement according to contact-point planning”. (As a result of making a search, no Japanese patent application or academic paper that discloses the above-mentioned technique was found).

It is an object of the present invention is to provide a control method for a mobile robot that automatically generates a stable trajectory based on contact-point planning, and more particularly, to provide a control method for a mobile robot that improves the stability thereof by changing positions of contact points, as needed, while performing a multipoint contact movement according to contact-point planning.

A movement control method for a mobile robot according to a first exemplary aspect of the present invention is a movement control method for a mobile robot that moves while causing two or more mobile means to alternately contact the ground, the movement control method including: a contact-point planning setting step of setting contact-point planning using time-series data representing positions of contact points where the mobile means contact the ground; and a trajectory generation step of generating a trajectory for a movement of the mobile robot while causing the mobile means to contact the ground at the contact points as set in the contact-point planning setting step. The trajectory generation step includes changing the positions of the contact points when the trajectory diverges.

In the first exemplary aspect of the present invention, the trajectory generation step preferably includes: constructing a prediction model that describes a relationship between a control input to the mobile robot and a motion of the mobile robot, the prediction model representing a state change of the mobile robot in a prediction interval of a predetermined duration; obtaining, in the prediction interval, time-series data on the control input to ensure the stability of the mobile robot, by using a predetermined stability evaluation criterion and a constraint condition based on a mechanical balance; obtaining a trajectory of the mobile robot based on the obtained time-series data on the control input and the prediction model; introducing a slack variable for relaxing a constraint into the constraint condition; introducing a slack variable into the stability evaluation criterion in such a manner that the slack variable becomes substantially zero when a solution to a stable trajectory is obtained under the constraint condition and a value equal to or greater than substantially zero is generated as the slack variable when the trajectory diverges under the constraint condition; and changing the positions of the contact points so as to cancel the generated value of the slack variable.

In the first exemplary aspect of the present invention, when the slack variable is introduced into the constraint condition, the slack variable is preferably introduced into an equation of equilibrium for a moment around an X-axis of a center of gravity of the mobile robot and into an equation of equilibrium for a moment around a Y-axis of the center of gravity of the mobile robot, the X-axis and the Y-axis being orthogonal to each other within a plane perpendicular to a Z-axis corresponding to a vertical direction.

In the first exemplary aspect of the present invention, the prediction interval is preferably separated into an unadjustable sub-interval including no contact points whose positions can be changed, and an adjustable sub-interval including one or more contact points whose positions can be changed, and a value equal to or greater than substantially zero is preferably allowed to be generated as the slack variable only during the adjustable sub-interval.

In the first exemplary aspect of the present invention, an expression for the constraint condition preferably includes a center-of-gravity vertical trajectory of the mobile robot and a trajectory of a moment around the center of gravity of the mobile robot, and the trajectory generation step preferably includes: temporarily setting the center-of-gravity vertical trajectory and the trajectory of the moment around the center of gravity of the mobile robot one time within the prediction interval; obtaining a solution to a function of the stability evaluation criterion one time under the constraint condition, and changing, based on an obtained result, the positions of the contact points so as to stabilize the motion of the mobile robot within the prediction interval and correcting the center-of-gravity vertical trajectory and the trajectory of the moment around the center of gravity of the mobile robot; and recalculating, at least one time, the solution to the function of the stability evaluation criterion by using the changed positions of the contact points, the corrected center-of-gravity vertical trajectory, and the corrected trajectory of the moment around the center of gravity.

In the first exemplary aspect of the present invention, the trajectory is obtained within the prediction interval in the trajectory generation step; the mobile robot is driven by using data on a first point of the prediction interval as a current input value; and the trajectory generation step is repeated by advancing the prediction interval by a small amount of time.

A mobile robot according to a second exemplary aspect of the present invention is a mobile robot that moves while causing two or more mobile means to alternately contact the ground, the mobile robot including: a contact-point planning setting unit that sets contact-point planning using time-series data representing positions of contact points where the mobile means contact the ground; and a trajectory generation unit that generates a trajectory for a movement of the mobile robot while causing the mobile means to contact the ground at the contact points as set by the contact-point planning setting unit. The trajectory generation unit changes the positions of the contact points when the trajectory diverges.

In the second exemplary aspect of the present invention, the trajectory generation unit is preferably configured to: construct a prediction model that describes a relationship between a control input to the mobile robot and a motion of the mobile robot, the prediction model representing a state change of the mobile robot in a prediction interval of a predetermined duration; obtain, in the prediction interval, time-series data on the control input to ensure the stability of the mobile robot, by using a predetermined stability evaluation criterion and a constraint condition based on a mechanical balance; obtain a trajectory of the mobile robot based on the obtained time-series data on the control input and the prediction model; introduce a slack variable for relaxing a constraint into the constraint condition; introduce a slack variable into the stability evaluation criterion in such a manner that the slack variable becomes substantially zero when a solution to a stable trajectory is obtained under the constraint condition and a value equal to or greater than substantially zero is generated as the slack variable when the trajectory diverges under the constraint condition; and change the positions of the contact points so as to cancel the generated value of the slack variable.

According to the present invention, the mobile robot can autonomously move while automatically generating a stable center-of-gravity trajectory based on the set contact-point planning. At this time, a failure of control can be avoided by changing the contact points as needed, thereby improving the stability.

The above and other objects, features and advantages of the present invention will become more fully understood from the detailed description given hereinbelow and the accompanying drawings which are given by way of illustration only, and thus are not to be considered as limiting the present invention.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a view showing an example of a motion of a robot;

FIG. 2 is a diagram showing an example of a mechanical structure of a mobile robot;

FIG. 3 is a functional block diagram of the mobile robot;

FIG. 4 is a diagram showing six-axis forces;

FIG. 5 is a functional block diagram of a controller;

FIG. 6 is a view showing an example of an outline of contact-point planning;

FIG. 7 is a diagram showing an example of contact-point planning;

FIG. 8 is a diagram showing an example of a prediction interval;

FIG. 9 is a view showing a motion in the prediction interval;

FIG. 10 is a diagram for explaining a shift in the prediction interval;

FIG. 11 is a view showing a mobile robot model used for prediction;

FIG. 12 is a diagram for explaining discretization of the prediction interval;

FIG. 13 is a diagram showing coordinate systems for contact points and a contact polygon;

FIG. 14 is a diagram illustrating a case where the contact points become unstable;

FIG. 15 is a diagram illustrating a case where the positions of the contact points cannot be changed;

FIG. 16 is a diagram illustrating a case where the positions of the contact points can be changed;

FIG. 17 is a view illustrating an amount of change in the positions of the contact points;

FIG. 18 is a diagram illustrating a state where the amount of change in each position is defined for individual contact points;

FIG. 19 is a flowchart showing the entire flow of a movement control method for the mobile robot;

FIG. 20 is a detailed flowchart for explaining a procedure of a trajectory generation step;

FIG. 21 is a detailed flowchart for explaining the procedure of the trajectory generation step;

FIG. 22 is a detailed flowchart for explaining the procedure of the trajectory generation step;

FIG. 23A is a view showing a multi-mass-point model of the mobile robot;

FIG. 23B is a view showing a multi-mass-point model of the mobile robot;

FIG. 24 is a diagram showing a state in which trajectories of hands and feet are interpolated;

FIG. 25 is a diagram showing contact-point planning in which the hands and feet of a quadruped walking robot are allowed to randomly land;

FIG. 26 is a diagram showing snapshots of execution results when there is no disturbance;

FIG. 27 shows graphs each illustrating a center-of-gravity position, a reaction force center position, and a load in the vertical direction of each contact point;

FIG. 28 is a diagram showing snapshots of execution results when a disturbance is input;

FIG. 29 shows graphs each illustrating the center-of-gravity position, the reaction force center position, and the load in the vertical direction of each contact point;

FIG. 30 is a graph showing a slack variable value; and

FIG. 31 is a diagram showing a modified example.

DESCRIPTION OF THE EXEMPLARY EMBODIMENTS

Exemplary embodiments of the present invention will be described with reference to the reference numerals denoting elements in the drawings.

First Exemplary Embodiment

This exemplary embodiment is characterized by a mobile robot control device, and specifically, by a mobile robot control device that generates a trajectory for controlling a movement operation of a mobile robot. Prior to the description of a specific control (trajectory generation), the hardware configuration of the mobile robot to be controlled will be described.

FIG. 2 is a diagram showing an example of a mechanical structure of the mobile robot.

In a mobile robot 100, each hip joint is composed of three axes; each knee joint is composed of one axis; each ankle joint is composed of two axes; each shoulder joint is composed of three axes (shoulder pitch, shoulder roll, and shoulder yaw); each elbow joint is composed of one axis (elbow pitch); and each wrist joint is composed of three axes (wrist yaw, wrist pitch, and wrist roll). (Although the mechanical structure of the mobile robot is not limited to the above one, six or more degrees of freedom of movement of hands (arms) and six or more degrees of freedom of movement of feet (legs) are necessary).

The mobile robot 100 includes encoder-equipped motors 1, 2, . . . , and 28 which are provided at the respective joints.

Motors (joint driving means) 1 a, 2 a, . . . , and 28 a (see FIG. 3) which are provided at the respective joints can respectively adjust joint angles θ1, θ2, . . . , and θ28 of the respective joints.

On the other hand, encoders (joint angle detection means) 1 b, 2 b, and 28 b which are provided at the respective joints can respectively measure the joint angles θ1, θ2, . . . , and θ28 of the respective joints.

The mobile robot 100 also includes contact force sensors 29 which are provided at each foot section (foot sole section) and each hand section (palm section).

The contact forces herein described refer to six-axis forces. As shown in FIG. 4, the contact forces include a set (f_(x), f_(y), f_(z))^(T) of forces fin x-axis, y-axis, and z-axis directions, and a set (τ_(x), τ_(y), τ_(z))^(T) of forces τ around the x-axis, the y-axis, and the z-axis. (The x-axis and the y-axis are orthogonal to each other within a plane perpendicular to the z-axis corresponding to the vertical direction.)

This mobile robot moves while bringing at least one of the right foot, the left foot, the right hand, and the left hand thereof into contact with a floor, a wall, a table, or the like during a movement.

Accordingly, the right foot, the left foot, the right hand, and the left hand are also referred to as contact point candidates in the following description.

The hands and feet of the robot indicate mobile means.

FIG. 3 is a functional block diagram of the mobile robot 100.

The mobile robot 100 includes the motors 1 a to 28 a and the encoders 1 b to 28 b, which are provided at the respective joints, the force sensors 29, and a controller 210.

The controller 210 receives sensor detected values from the encoders 1 b to 28 b and the force sensors 29 at the respective joints. The controller 210 outputs drive signals to the motors 1 a to 28 a at the respective joints.

The controller 210 includes, as a main hardware configuration, a microcomputer including a CPU (Central Processing Unit) 210 a, a ROM (Read Only Memory) 210 b, and a RAM (Random Access Memory) 210 c. The CPU 210 a performs control processing, arithmetic operation processing, and the like. The ROM 210 b stores a control program, an arithmetic operation program, and the like which are executed by the CPU 210 a. The RAM 210 c temporarily stores processed data and the like. The CPU 210 a, the ROM 210 b, and the RAM 210 c are connected to each other via a data bus 210 d. Necessary programs may be recorded in a nonvolatile recording medium and the programs may be installed in the controller 210 from the nonvolatile storage medium as needed.

FIG. 5 shows a functional block diagram of the controller 210.

The controller 210 includes a contact-point planning setting unit 221, a trajectory generation unit 222, and a motion control unit 223. The contact-point planning setting unit 221 stores contact-point planning which is instructed by a user. The trajectory generation unit 222 generates a trajectory which can be stably executed. The motion control unit 223 causes the mobile robot 100 to execute the entire body motion according to the generated trajectory.

In this case, the trajectory generation unit 222 generates the trajectory that allows the mobile robot to execute the motion according to the contact-point planning. However, the trajectory generation includes changing of contact points as needed.

Detailed processing operations of these functional units will be described later.

Trajectory Generation Method for Multipoint Contact Movement

The present invention has features of: (1) generating a trajectory that achieves a multipoint contact movement; and (2) changing contact points as needed. The feature that is intended to be claimed by this application at the time of filing of the present application is the feature (2) of changing (correcting) contact points so as to improve the stability of the multipoint contact movement.

However, since it cannot be said that the trajectory generation method for multipoint contact movement is a known technique at present, the method for (1) generating a trajectory that achieves a multipoint contact movement will now be described.

Note that the applicant of the present application filed Japanese Patent Application No. 2013-254989 (filed on Dec. 10, 2013), but the patent application has not been published yet.

As described above, Japanese Patent No. 5034235 discloses a control system which has been developed to deal with the multipoint contact movement.

According to the present invention, a trajectory for multipoint contact movement may be generated by the method disclosed in Japanese Patent No. 5034235, and in addition, the contact points may be corrected by the below-described method. (Furthermore, since the present invention focuses on the feature “(2) changing contact points as needed”, detailed methods for trajectory generation are not limited to the method disclosed in Japanese Patent No. 5034235, as long as the multipoint contact movement can be achieved).

In other words, the present invention does not exclude the method disclosed in Japanese Patent No. 5034235 as the trajectory generation method. However, the method disclosed in Japanese Patent No. 5034235 has problems as described below.

The technique disclosed in Japanese Patent No. 5034235 has a problem that if contact-point planning, as well as a target center-of-gravity position and a target momentum, are not given, a stable trajectory cannot be generated.

In the first place, it is difficult to predict the future target center-of-gravity position, so it is impossible for a user to set the future center-of-gravity position which is an unknown control target value.

It is desirable that the user provide the robot with only the contact-point planning and the robot autonomously move while automatically generating a stable center-of-gravity trajectory based on the set contact-point planning.

The technique disclosed in Japanese Patent No. 5034235 has another problem that a change in the force associated with switching of contact points (transition of contact states) is steep, which makes it difficult to obtain a smooth transition of the force.

In order to cause a mobile robot to stably perform the multipoint contact movement, it is necessary to employ a technique for distributing contact forces smoothly and appropriately according to contact points, which vary from hour to hour, and for generating a stable center-of-gravity trajectory.

For this reason, the present inventors have tried to use a model prediction control.

First, the outline of the model prediction control will be described.

(Brief Description of Model Prediction Control)

For example, assume the case where a robot is caused to execute a movement operation as shown in FIG. 1.

Assume herein a series of motions that cause a humanoid robot having two arms and two legs to grip a bottle which is placed at the back of a table.

In this case, the user creates contact-point planning to execute the series of motions (task).

Specifically, as shown in FIG. 6, the planning is created to determine where and how to place the hands and feet and the order in which the hands and feet are placed.

In FIG. 6, locations where the feet and hands are brought into contact with the floor, the wall, and the table are marked.

This contact-point planning is specifically shown in FIG. 7.

The contact-point planning is time-series data representing where and how the left hand (LH), the right hand (RH), the left foot (LF), and the right foot (RF) are placed and the order in which the left hand, the right hand, the left foot, and the right foot are placed.

The correspondence relationship among FIGS. 1, 6, and 7 will be briefly described.

The robot, which stands on the left foot at first (t0), moves the right foot, which is an idling leg, to step forward and then causes the right foot to be landed (t1).

In order to instruct the mobile robot to execute the motion planning, it is necessary to specify a coordinate P_(LF1) of a contact point on the floor on which the left foot is first landed, a posture r_(LF1) of the left foot at that time, a coordinate P_(RF1) of a contact point on the floor on which the right foot is landed, and a posture r_(RF1) of the right foot at that time.

The coordinates of each contact point are represented by a set of space coordinates P=(P_(x), P_(y), P_(z)).

The posture refers to the direction of the sole of each foot when the foot is landed on the contact point. The posture is represented by, for example, a set of Euler angles r=(r_(x), r_(y), r_(z)). (Specifically, r_(x), r_(y), and r_(z) represent a roll angle, a pitch angle, and a yaw angle, respectively.)

The following description also applies to the coordinates of the contact points on which the feet are landed and the form for instructing the posture at that time, and thus the description thereof will be omitted as appropriate.

After standing on both feet, the mobile robot moves the left foot to step forward (t2) and then causes the left foot to be landed (t4).

During this time, the left hand is placed on the wall (t3).

In this case, a coordinate Pull of a contact point on the wall where the left hand is placed and a posture r_(LH1) of the left hand are specified.

The coordinates of each contact point are represented as a set of space coordinates P=(P_(x), P_(y), P_(z)). The posture refers to the direction of the palm of each hand when the hand is placed on the contact point. The posture is represented by a set of Fuler angles r=(r_(x), r_(y), r_(z)).

Since the subsequent contact-point planning is apparent from FIGS. 1, 6, and 7, the description thereof is omitted.

In this manner, the user creates the contact-point planning as time-series data.

When the contact-point planning thus created is input to the mobile robot, the mobile robot autonomously moves while generating a trajectory to achieve the contact-point planning.

At this time, the mobile robot performs a model prediction control during the process of trajectory generation.

Specifically, a trajectory that allows the mobile robot to stably move within a prediction interval having a certain duration is generated, and the trajectory that enables a stable motion is sequentially updated while gradually shifting the prediction interval by a small amount of time (Δt).

FIG. 8 shows an example of the prediction interval.

An interval between the present time and the expiration of a predetermined time (for example, 1.6 seconds) is set as the prediction interval.

Further, a stable trajectory is generated so as not to diverge in the prediction interval.

FIG. 9 shows the image of the motion in the prediction interval.

After a stable trajectory is generated in the prediction interval having a certain duration as described above, only a first point of the trajectory is used as a current input value.

In the next trajectory update period (after Δt seconds), the prediction interval is shifted and a stable trajectory is generated in a new prediction interval in a similar manner to that in the previous trajectory update period (see FIG. 10).

The trajectory that does not diverge in the prediction interval is to be generated by setting an interval between the present time and the expiration of a certain period of time as the prediction interval as described above, instead of focusing only on the present time, or the next control period (Δt seconds) from the present time.

The mobile robot can stably move by repeating the above-described process.

The problem here is how to distribute the contact forces smoothly and appropriately according to the contact points, which vary from hour to hour, in the prediction interval having a certain duration, and how to generate a stable center-of-gravity trajectory.

The present inventors have conceived the idea that the problem with the generation of a stable trajectory in a certain prediction interval can be reduced to a convex quadratic programming problem (Quadratic Programming: QP).

Specifically, a stable trajectory for multipoint contact movement is obtained by solving the problem of minimizing an evaluation function J including the sum of squares of the contact forces at each contact point and the sum of squares of differential values of the six-axis forces.

Next, the derivation of the evaluation function J and the solution thereof (reducing to a convex quadratic programming problem) will be described.

This solution indicates that time-series data on the center-of-gravity position, the center-of-gravity velocity, the contact forces, and the differential values of the contact forces, which are used to achieve a stable multipoint contact movement within a certain prediction interval, is obtained. (In the following description, assume that the hands and feet are placed on the positions (contact points) as instructed by the contact-point planning. In other words, there is no need to consider the case in which the contact points are changed. While it is necessary to take some measures, such as relaxation of a condition expression or an evaluation expression, to change the contact points as needed, these will be described in detail later).

FIG. 11 shows the mobile robot model used for prediction.

The inertia of the entire mobile robot is represented by a center of gravity G. The six-axis forces are defined for each contact point.

In this case, assuming that the amount of translational motion at the center of gravity G is represented by P; the amount of rotational motion (amount of angular motion) around the center of gravity is represented by L; and the number of contact points is represented by n, the following motion equations are obtained.

$\begin{matrix} {{\overset{.}{P} = {{m\overset{¨}{G}} = {{\sum\limits_{i = 1}^{n}f_{i}} - {mg}}}}{\overset{.}{L} = {{\sum\limits_{i = 1}^{n}{\left( {p_{i} - G} \right) \times f_{i}}} + \tau_{i}}}} & (1) \end{matrix}$

The suffix i represents the index of a contact point.

For example, when there are four candidates for the contact point, i.e., the left hand, the right hand, the left foot, and the right foot, n=4 (left hand: LH=1, right hand: RH=2, left foot: LF=3, right foot: RF=4) may be set. In this case, however, a constraint condition is set in such a manner that the contact forces associated with the contact point candidates that are not in contact with the floor and the wall are set to 0. For example, in the example shown in FIG. 11, the following expression is established.

f _(RH)=0,τ_(RH)=0

f _(LF)=0,τ_(LF)=0  (2)

When the first expression and the second expression in Expression (1) are differentiated, the following expression is obtained. (Expression (1) is represented by vectors. The vectors are decomposed into components x, y, and z, and are respectively referred to as a first expression, a second expression, . . . , and a sixth expression).

$\begin{matrix} {{{\overset{\ldots}{G}}_{x} = {\frac{1}{m}{\sum\limits_{i = 1}^{n}{\overset{.}{f}}_{ix}}}}{{\overset{\ldots}{G}}_{y} = {\frac{1}{m}{\sum\limits_{i = 1}^{n}{\overset{.}{f}}_{iy}}}}} & (3) \end{matrix}$

In this exemplary embodiment, the two expressions are used as a system. The third to fifth expressions in Expression (1) are formulated as constraint conditions.

$\begin{matrix} {{{m{\overset{¨}{G}}_{z}} = {{\sum\limits_{i = 1}^{n}f_{iz}} - {mg}}}{{\overset{.}{L}}_{x} = {\sum\limits_{i = 1}^{n}\left( {{\left( {p_{iy} - G_{y}} \right)f_{iz}} - {\left( {p_{iz} - G_{z}} \right)f_{iy}} + \tau_{ix}} \right)}}{{\overset{.}{L}}_{y} = {\sum\limits_{i = 1}^{n}\left( {{\left( {p_{iz} - G_{z}} \right)f_{ix}} - {\left( {p_{ix} - G_{x}} \right)f_{iz}} + \tau_{iy}} \right)}}} & (4) \end{matrix}$

Further, the prediction interval is divided into N intervals as shown in FIG. 12, and Expression (3) and Expression (4) are discretized. When Expression (3) is discretized, the following expression is obtained.

G _(x) [j+1]=G _(x) [j]+Ġ _(x) [j]Δt+Σf _(ix) [j]Δt ²/2m+Σ{dot over (f)} _(ix) [j]Δt ³/6 m

G _(y) [j+1]=G _(y) [j]+Ġ _(y) [j]Δt+Σf _(iy) [j]Δt ²/2m+Σ{dot over (f)} _(iy) [j]Δt ³/6 m

Ġ _(y) [j+1]=Ġ _(y) [j]+Σf _(iy) [j]Δt/m+Σ{dot over (f)} _(iy) [j]Δt ²/2 m

f _(i) [j+1]=f _(i) [j]+{dot over (f)} _(i) [j]Δt (i=1, . . . n)

τ_(i) [j+1]=τ_(i) [j]+{dot over (τ)} _(i) [j]Δt (i=1, . . . n)  (5)

Assuming that the constraints in Expression (4) are constantly satisfied in each sampling point, Expression (4) is discretized as follows.

F _(Gz) [j]:=m({umlaut over (G)} _(z) [j]+g)=Σf _(iz) [j]

{dot over (L)} _(x) [j]=−F _(z) [j]G _(y) [j]+Σ(p _(iy) [j]f _(iz) [j]−(p _(iz) [j]−G _(z) [j])f _(iy) [j]+τ _(ix) [j])

{dot over (L)} _(y) [j]=F _(z) [j]G _(x) [j]+Σ(p _(iz) [j]−G _(z) [j])f _(ix) [j]−p _(iz) [j]f _(iz) [j]+τ _(iy) [j])  (6)

In this case, the parameters are set as follows.

$\begin{matrix} {\begin{matrix} {{\theta_{i}\lbrack j\rbrack}:=\begin{bmatrix} {f_{ix}\lbrack j\rbrack} & {f_{iy}\lbrack j\rbrack} & {f_{iz}\lbrack j\rbrack} & {\tau_{ix}\lbrack j\rbrack} & {\tau_{iy}\lbrack j\rbrack} & {\tau_{iz}\lbrack j\rbrack} \end{bmatrix}^{T}} \\ {:=\begin{bmatrix} {f_{i}\lbrack j\rbrack}^{T} & {\tau_{i}\lbrack j\rbrack}^{T} \end{bmatrix}^{T}} \end{matrix}{{x\lbrack j\rbrack}:=\begin{bmatrix} {G_{x}\lbrack j\rbrack} & {{\overset{.}{G}}_{x}\lbrack j\rbrack} & {G_{y}\lbrack j\rbrack} & {{\overset{.}{G}}_{y}\lbrack j\rbrack} & {\theta_{1}\lbrack j\rbrack}^{T} & \ldots & {\theta_{n}\lbrack j\rbrack}^{T} \end{bmatrix}^{T}}{{u\lbrack j\rbrack}:=\begin{bmatrix} {{\overset{.}{\theta}}_{1}\lbrack j\rbrack}^{T} & \ldots & {{\overset{.}{\theta}}_{n}\lbrack j\rbrack}^{T} \end{bmatrix}}} & (7) \end{matrix}$

θ_(i) represents a vector in which the contact forces, which are the six-axis forces, are arranged. x represents a vector in which the x-coordinate of the center of gravity G, the velocity in the x-axis direction of the center of gravity G, the y-coordinate of the center of gravity G, the velocity in the y-axis direction of the center of gravity G, and the contact forces (six-axis forces) at each contact point are arranged. The vector “x” is referred to as a state variable. Further, u represents a vector in which the differential values of the contact forces (six-axis forces) are arranged.

When the parameters are set as described above, Expression (5) can be described as follows.

$\begin{matrix} {{{x\left\lbrack {j + 1} \right\rbrack} = {{{Ax}\lbrack j\rbrack} + {{Bu}\lbrack j\rbrack}}}{A:=\begin{bmatrix} A_{0} & A_{f} & \ldots & A_{f} \\ O & I & \ldots & O \\ \vdots & \vdots & \ddots & \; \\ O & O & \; & I \end{bmatrix}}{B:=\begin{bmatrix} B_{f} & \ldots & B_{f} \\ {I\; \Delta \; t} & \ldots & O \\ \vdots & \ddots & \; \\ O & \; & {I\; \Delta \; t} \end{bmatrix}}{A_{0}:=\begin{bmatrix} 1 & {\Delta \; t} & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & {\Delta \; t} \\ 0 & 0 & 0 & 1 \end{bmatrix}}{A_{f}:=\begin{bmatrix} {\Delta \; {t^{2}/2}m} & 0 & 0 & 0 & 0 & 0 \\ {\Delta \; {t/m}} & 0 & 0 & 0 & 0 & 0 \\ 0 & {\Delta \; {t^{2}/2}m} & 0 & 0 & 0 & 0 \\ 0 & {\Delta \; {t/m}} & 0 & 0 & 0 & 0 \end{bmatrix}}{B_{f}:=\begin{bmatrix} {\Delta \; {t^{3}/6}m} & 0 & 0 & 0 & 0 & 0 \\ {\Delta \; {t^{2}/2}m} & 0 & 0 & 0 & 0 & 0 \\ 0 & {\Delta \; {t^{3}/6}m} & 0 & 0 & 0 & 0 \\ 0 & {\Delta \; {t^{2}/2}m} & 0 & 0 & 0 & 0 \end{bmatrix}}} & (8) \end{matrix}$

Expression (8) indicates that the stable variable x in the case of (j+1) can be described by the previous state. When the stable variables x within the prediction interval are sequentially calculated by using Expression (8), the following expression is obtained.

$\begin{matrix} {\mspace{79mu} {{{{x\left\lbrack {k + 1} \right\rbrack} = {{{Ax}\lbrack k\rbrack} + {{Bu}\lbrack k\rbrack}}}\begin{matrix} {\mspace{79mu} {{x\left\lbrack {k + 2} \right\rbrack} = {{{Ax}\left\lbrack {k + 1} \right\rbrack} + {{Bu}\left\lbrack {k + 1} \right\rbrack}}}} \\ {= {{A\left( {{{Ax}\lbrack k\rbrack} + {{Bu}\lbrack k\rbrack}} \right)} + {{Bu}\left\lbrack {k + 1} \right\rbrack}}} \\ {= {{A^{2}{x\lbrack k\rbrack}} + {{ABu}\lbrack k\rbrack} + {{Bu}\left\lbrack {k + 1} \right\rbrack}}} \end{matrix}}\begin{matrix} {\mspace{79mu} {{x\left\lbrack {k + 3} \right\rbrack} = {{{Ax}\left\lbrack {k + 2} \right\rbrack} + {{Bu}\left\lbrack {k + 2} \right\rbrack}}}} \\ {= {{A\left( {{A^{2}{x\lbrack k\rbrack}} + {{ABu}\lbrack k\rbrack} + {{Bu}\left\lbrack {k + 1} \right\rbrack}} \right)} + {{Bu}\left\lbrack {k + 2} \right\rbrack}}} \\ {= {{A^{3}{x\lbrack k\rbrack}} + {A^{2}{{Bu}\lbrack k\rbrack}} + {{ABu}\left\lbrack {k + 1} \right\rbrack} + {{Bu}\left\lbrack {k + 2} \right\rbrack}}} \end{matrix} \vdots {{x\left\lbrack {k + N} \right\rbrack} = {{{{Ax}\left\lbrack {k + N - 1} \right\rbrack} + {{Bu}\left\lbrack {k + N - 1} \right\rbrack}} = {{A^{N}{x\lbrack k\rbrack}} + {A^{N - 1}{{Bu}\lbrack k\rbrack}\ldots} + {{ABu}\left\lbrack {k + N - 2} \right\rbrack} + {{Bu}\left\lbrack {k + N - 1} \right\rbrack}}}}}} & (9) \end{matrix}$

Accordingly, when the arrangement of the stable variables x which are obtained in chronological order is represented by the capital “X”, the time-series data X on the stable variables can be expressed as follows.

$\begin{matrix} \begin{matrix} {{X\left\lbrack {k + 1} \right\rbrack}:=\begin{bmatrix} {x\left\lbrack {k + 1} \right\rbrack} \\ {x\left\lbrack {k + 2} \right\rbrack} \\ \vdots \\ {x\left\lbrack {k + N - 1} \right\rbrack} \\ {x\left\lbrack {k + N} \right\rbrack} \end{bmatrix}} \\ {= {{\begin{bmatrix} A \\ A^{2} \\ \; \\ A^{N - 1} \\ A^{N} \end{bmatrix}{x\lbrack k\rbrack}} + {\begin{bmatrix} B & \; & \; & \; & \; \\ {AB} & B & \; & \; & \; \\ \vdots & \; & \ddots & \; & \; \\ {A^{N - 2}B} & \; & \; & B & \; \\ {A^{N - 1}B} & \; & \ldots & {AB} & B \end{bmatrix}\begin{bmatrix} {u\lbrack k\rbrack} \\ {u\left\lbrack {k + 1} \right\rbrack} \\ \vdots \\ {u\left\lbrack {k + N - 2} \right\rbrack} \\ {u\left\lbrack {k + N - 1} \right\rbrack} \end{bmatrix}}}} \\ {:={{G_{1}{x\lbrack k\rbrack}} + {G_{2}{U\lbrack k\rbrack}}}} \end{matrix} & (10) \end{matrix}$

Expression (10) indicates a prediction model that represents a state transition of the mobile robot within a certain prediction interval by using the differential value (U[k]) of the contact force as an input value.

Here, the present inventors have introduced the following evaluation function J so as to generate a stable trajectory within the prediction interval.

$\begin{matrix} {{{\min \; J} = {\int_{0}^{N\; \Delta \; t}{\frac{1}{2}{\sum\limits_{i = 1}^{n}{\left( {{\theta_{i}^{T}Q_{i}\theta_{i}} + {{\overset{.}{\theta}}_{i}^{T}R_{i}{\overset{.}{\theta}}_{i}}} \right){t}}}}}}{Q_{i} = {{diag}\left( {Q_{1}^{i},\ldots \mspace{14mu},Q_{6}^{i}} \right)}}{R_{i} = {{diag}\left( {R_{1}^{i},\ldots \mspace{14mu},R_{6}^{i}} \right)}}} & (11) \end{matrix}$

Note that Q_(i) and R_(i) each represent a weight that is set as necessary.

The meaning of the weight and how to distribute the weight to the contact point candidates will be described in detail later. In this case, assume that, for example, the forces are distributed equally to all contact point candidates; all values Q_(i) are set to 1; and all values R_(i) satisfy 1×10⁻⁶.

In this case, θ_(i) represents the vector in which the components of the contact forces, which are the six-axis forces, are arranged, and θ_(i)(·) represents the vector in which the differential values of the contact force components are arranged (the dot in parentheses represents differentiation). Accordingly, Expression (11) indicates that “the sum of squares of the contact forces (six-axis forces) and the differential values of the contact forces (six-axis forces) is minimized within the prediction interval”. The first term in Expression (11) indicates that the sum of squares of the contact forces (six-axis forces) is minimized.

This first term includes the following operations.

(1) The contact forces are distributed equally to each contact point. This provides the effect of moving the center of gravity to as stable a position as possible.

(2) An undesired internal force is canceled out.

(3) The stability of contacting the ground at each contact point is enhanced. This provides the effect of setting a reaction force center point within a contact surface at the center of the contact surface.

The second term in Expression (11) indicates that the sum of squares of the differential values (time change ratio of six-axis forces) of the contact forces (six-axis forces) is minimized.

This second term includes the following operations.

(1) The divergence of the center of gravity is suppressed.

(2) The contact forces are smoothly shifted.

To minimize the evaluation function J by appropriately adding these operations by weights Q and R indicates that “a stable center-of-gravity trajectory and contact forces at each contact point are output, while the conditions, such as high contact stability, smooth transition of contact forces, and minimum internal force, are satisfied”.

When Expression (11) is discretized, the following expression is obtained.

$\begin{matrix} {{\min \; J} = {\frac{1}{2}{\sum\limits_{j = 1}^{N - 1}{\sum\limits_{i = 1}^{n}\begin{pmatrix} {{{\theta_{i}\left\lbrack {k + j + 1} \right\rbrack}^{T}Q_{i}{\theta_{i}\left\lbrack {k + j + 1} \right\rbrack}} +} \\ {{{\overset{.}{\theta}}_{i}\left\lbrack {k + j} \right\rbrack}^{T}R_{i}{{\overset{.}{\theta}}_{i}\left\lbrack {k + j} \right\rbrack}} \end{pmatrix}}}}} & (12) \end{matrix}$

Since the contact forces (six-axis forces) are included in the state variables x, Expression (7) can be transformed as follows.

$\begin{matrix} \begin{matrix} {\begin{bmatrix} {\theta_{i}\left\lbrack {k + j + 1} \right\rbrack} \\ \vdots \\ {\theta_{n}\left\lbrack {k + j + 1} \right\rbrack} \end{bmatrix} = {\begin{bmatrix} O_{6 \times 4} & I_{6} & \; & \; \\ \; & \; & \ddots & \; \\ \; & \; & \; & I_{6} \end{bmatrix}{x\left\lbrack {k + j + 1} \right\rbrack}}} \\ {:={T_{f}{x\left\lbrack {k + j + 1} \right\rbrack}}} \end{matrix} & (13) \end{matrix}$

Accordingly, the first sigma in Expression (12) can be calculated as follows.

$\begin{matrix} {{{\sum\limits_{i = 1}^{n}\left( {{{\theta_{i}\left\lbrack {k + j + 1} \right\rbrack}^{T}Q_{i}{\theta_{i}\left\lbrack {k + j + 1} \right\rbrack}} + {{{\overset{.}{\theta}}_{i}\left\lbrack {k + j} \right\rbrack}^{T}R_{i}{{\overset{.}{\theta}}_{i}\left\lbrack {k + j} \right\rbrack}}} \right)} = {{{{\left( {T_{f}{x\left\lbrack {k + j + 1} \right\rbrack}} \right)^{T}\begin{bmatrix} Q_{1} & \; & \; \\ \; & \ddots & \; \\ \; & \; & Q_{n} \end{bmatrix}}\left( {T_{f}{x\left\lbrack {k + j + 1} \right\rbrack}} \right)} + {{{u\left\lbrack {k + j} \right\rbrack}^{T}\begin{bmatrix} R_{1} & \; & \; \\ \; & \ddots & \; \\ \; & \; & R_{n} \end{bmatrix}}{u\left\lbrack {k + j} \right\rbrack}}}:={{{x\left\lbrack {k + j + 1} \right\rbrack}^{T}Q_{a}{x\left\lbrack {k + j + 1} \right\rbrack}} + {{u\left\lbrack {k + j} \right\rbrack}^{T}R_{a}{u\left\lbrack {k + j} \right\rbrack}}}}}{Q_{a}:={T_{f}^{T}{{diag}\left( {Q_{1},\ldots \mspace{14mu},Q_{n}} \right)}T_{f}}}{R_{a}:={{diag}\left( {R_{1},\ldots \mspace{14mu},R_{n}} \right)}}} & (14) \end{matrix}$

Accordingly, Expression (12) can be expressed as follows.

$\begin{matrix} {\begin{matrix} {J = {\frac{1}{2}{\sum\limits_{j = 1}^{N - 1}\; \left( {{{x\left\lbrack {k + j + 1} \right\rbrack}^{T}Q_{a}{x\left\lbrack {k + j + 1} \right\rbrack}} + {{u\left\lbrack {k + j} \right\rbrack}^{T}R_{a}{u\left\lbrack {k + j} \right\rbrack}}} \right)}}} \\ {= {{\frac{1}{2}{{X\left\lbrack {k + 1} \right\rbrack}^{T}\begin{bmatrix} Q_{a} & \; & \; \\ \; & \ddots & \; \\ \; & \; & Q_{a} \end{bmatrix}}{X\left\lbrack {k + 1} \right\rbrack}} + {\frac{1}{2}{{U\lbrack k\rbrack}^{T}\begin{bmatrix} R_{a} & \; & \; \\ \; & \ddots & \; \\ \; & \; & R_{a} \end{bmatrix}}{U\lbrack k\rbrack}}}} \\ {= {{\frac{1}{2}{X\left\lbrack {k + 1} \right\rbrack}^{T}Q_{w}{X\left\lbrack {k + 1} \right\rbrack}} + {\frac{1}{2}{U\lbrack k\rbrack}^{T}R_{w}{U\lbrack k\rbrack}}}} \end{matrix}\mspace{20mu} {Q_{w}:={{diag}\left( {Q_{a},\ldots \mspace{14mu},Q_{a}} \right)}}\mspace{20mu} {R_{w}:={{diag}\left( {R_{a},\ldots \mspace{14mu},R_{a}} \right)}}} & (15) \end{matrix}$

Further, the evaluation function J can be formulated as follows by using Expression (10).

$\begin{matrix} \begin{matrix} {J = {{\frac{1}{2}{X\left\lbrack {k + 1} \right\rbrack}^{T}Q_{w}{X\left\lbrack {k + 1} \right\rbrack}} + {\frac{1}{2}{U\lbrack k\rbrack}^{T}R_{w}{U\lbrack k\rbrack}}}} \\ {= {{\frac{1}{2}\left( {{G_{1}{x\lbrack k\rbrack}} + {G_{2}{U\lbrack k\rbrack}}} \right)^{T}{Q_{w}\left( {{G_{1}{x\lbrack k\rbrack}} + {G_{2}{U\lbrack k\rbrack}}} \right)}} + {\frac{1}{2}{U\lbrack k\rbrack}^{T}R_{w}{U\lbrack k\rbrack}}}} \\ {= {{\frac{1}{2}{U\lbrack k\rbrack}^{T}\left( {{G_{2}^{T}Q_{w}G_{2}} + R_{w}} \right){U\lbrack k\rbrack}} + {\left( {G_{2}^{T}Q_{w}G_{1}{x\lbrack k\rbrack}} \right)^{T}{U\lbrack k\rbrack}}}} \\ {:={{\frac{1}{2}{U\lbrack k\rbrack}^{T}{{HU}\lbrack k\rbrack}} + {F^{T}{U\lbrack k\rbrack}} + {const}}} \end{matrix} & (16) \end{matrix}$

Next, the constraint conditions are considered.

It is necessary to satisfy the following constraint conditions in all sampling points within the prediction interval.

The constraint conditions are as follows:

a constraint that the six-axis forces are set to 0 for non-contact contact point candidates as shown in Expression (2);

a constraint that the forces in the vertical direction as shown in Expression (6) are balanced; and

a constraint that the moments around the xy axes as shown in Expression (6) are balanced.

In this case, for example, assume that an i-th contact point and an (i+2)-th contact point are non-contact points in a sampling point j.

At this time, Expression (2) and Expression (6) can be described as follows.

$\begin{matrix} {\mspace{79mu} {{{{C\lbrack j\rbrack}{x\lbrack j\rbrack}} = {d\lbrack j\rbrack}}\mspace{79mu} {{C\lbrack j\rbrack}:=\begin{bmatrix} {C_{0}\lbrack j\rbrack} & {C_{1}\lbrack j\rbrack} & \ldots & O & {C_{i + 1}\lbrack j\rbrack} & O & \ldots & {C_{n}\lbrack j\rbrack} \\ O & O & \ldots & I & O & O & \ldots & O \\ O & O & \ldots & O & O & I & \ldots & O \end{bmatrix}}\mspace{20mu} {{d\lbrack j\rbrack}:=\begin{bmatrix} {d_{0}\lbrack j\rbrack} \\ O \\ O \end{bmatrix}}\mspace{20mu} {{C_{0}\lbrack j\rbrack}:=\begin{bmatrix} 0 & 0 & 0 & 0 \\ 0 & 0 & {- {m\left( {{{\overset{¨}{G}}_{z}\lbrack j\rbrack} + g} \right)}} & 0 \\ {m\left( {{{\overset{¨}{G}}_{z}\lbrack j\rbrack} + g} \right)} & 0 & 0 & 0 \end{bmatrix}}{{C_{i}\lbrack j\rbrack}:=\begin{bmatrix} 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & {- \left( {{p_{iz}\lbrack j\rbrack} - {G_{z}\lbrack j\rbrack}} \right)} & {p_{iy}\lbrack j\rbrack} & 1 & 0 & 0 \\ {{p_{iz}\lbrack j\rbrack} - {G_{z}\lbrack j\rbrack}} & 0 & {- {p_{ix}\lbrack j\rbrack}} & 0 & 1 & 0 \end{bmatrix}}\mspace{20mu} {{d_{0}\lbrack j\rbrack}:=\begin{bmatrix} {m\left( {{{\overset{¨}{G}}_{z}\lbrack j\rbrack} + g} \right)} \\ {{\overset{.}{L}}_{x}\lbrack j\rbrack} \\ {{\overset{.}{L}}_{y}\lbrack j\rbrack} \end{bmatrix}}}} & (17) \end{matrix}$

Here, the components of the coefficient matrices C[j] and d[j] vary depending on the sampling point. However, the information on contact/non-contact of the contact point candidates and the contact point positions are already given.

The center-of-gravity vertical trajectory (Gz[j]) and the moments (Lx(·)[j], Ly(·)[j]) around the center of gravity, which will be described in detail later, are briefly described as follows.

If the center-of-gravity vertical trajectory and the moment around the center of gravity are not determined, temporary values are set and used. For example, the center-of-gravity vertical trajectory and the moment around the center of gravity which are used in the previous control cycle may be used as temporary values.

Alternatively, the center-of-gravity vertical trajectory and the moment around the center of gravity may be temporarily set in such a manner that they are not moved from the current state within the prediction interval.

Then the calculations are performed one time by using the temporary values, and the obtained results are used to update the center-of-gravity vertical trajectory and the moment around the center of gravity, and solutions are repeatedly obtained.

In this manner, the center-of-gravity vertical trajectory and the moment around the center of gravity are also used as known values to proceed with the calculations, and a deviation is corrected in the update calculation.

It is necessity to satisfy the following expression so that Expression (17) holds in all future sampling points.

$\begin{matrix} {{\begin{bmatrix} {C\left\lbrack {k + 1} \right\rbrack} & \; & \; & \; \\ \; & {C\left\lbrack {k + 2} \right\rbrack} & \; & \; \\ \; & \; & \ddots & \; \\ \; & \; & \; & {C\left\lbrack {k + N} \right\rbrack} \end{bmatrix}\begin{bmatrix} {x\left\lbrack {k + 1} \right\rbrack} \\ {x\left\lbrack {k + 2} \right\rbrack} \\ \vdots \\ {x\left\lbrack {k + N} \right\rbrack} \end{bmatrix}} = \begin{bmatrix} {d\left\lbrack {k + 1} \right\rbrack} \\ {d\left\lbrack {k + 2} \right\rbrack} \\ \vdots \\ {d\left\lbrack {k + N} \right\rbrack} \end{bmatrix}} & (18) \end{matrix}$

Expression (10) is substituted into this expression.

$\begin{matrix} {{{\begin{bmatrix} {{C\left\lbrack {k + 1} \right\rbrack}B} & \; & \; & \; \\ {{C\left\lbrack {k + 2} \right\rbrack}{AB}} & {{C\left\lbrack {k + 2} \right\rbrack}B} & \; & \; \\ \vdots & \; & \ddots & \; \\ {{C\left\lbrack {k + N} \right\rbrack}A^{N - 1}B} & \ldots & {{C\left\lbrack {k + N} \right\rbrack}{AB}} & {{C\left\lbrack {k + N} \right\rbrack}B} \end{bmatrix}{U\lbrack k\rbrack}} = {\left. {\begin{bmatrix} {d\left\lbrack {k + 1} \right\rbrack} \\ {d\left\lbrack {k + 2} \right\rbrack} \\ \vdots \\ {d\left\lbrack {k + N} \right\rbrack} \end{bmatrix} - {\begin{bmatrix} {{C\left\lbrack {k + 1} \right\rbrack}A} \\ {{C\left\lbrack {k + 2} \right\rbrack}A^{2}} \\ \vdots \\ {{C\left\lbrack {k + N} \right\rbrack}A^{N}} \end{bmatrix}{x\lbrack k\rbrack}}}\Leftrightarrow{{VU}\lbrack k\rbrack} \right. = W}}{V:=\begin{bmatrix} {{C\left\lbrack {k + 1} \right\rbrack}B} & \; & \; & \; \\ {{C\left\lbrack {k + 2} \right\rbrack}{AB}} & {{C\left\lbrack {k + 2} \right\rbrack}B} & \; & \; \\ \vdots & \; & \ddots & \; \\ {{C\left\lbrack {k + N} \right\rbrack}A^{N - 1}B} & \ldots & {{C\left\lbrack {k + N} \right\rbrack}{AB}} & {{C\left\lbrack {k + N} \right\rbrack}B} \end{bmatrix}}\mspace{20mu} {W:={\begin{bmatrix} {d\left\lbrack {k + 1} \right\rbrack} \\ {d\left\lbrack {k + 2} \right\rbrack} \\ \vdots \\ {d\left\lbrack {k + N} \right\rbrack} \end{bmatrix} - {\begin{bmatrix} {{C\left\lbrack {k + 1} \right\rbrack}A} \\ {{C\left\lbrack {k + 2} \right\rbrack}A^{2}} \\ \vdots \\ {{C\left\lbrack {k + N} \right\rbrack}A^{N}} \end{bmatrix}{x\lbrack k\rbrack}}}}} & (19) \end{matrix}$

Lastly, the conditions for stabilizing each contact point and maintaining the contact are introduced.

FIG. 13 shows coordinate systems (marked with a superscript letter “l”) of contact points and a contact polygon (contact polygon of contact points).

Assume that each contact point is set as an origin and the coordinate system for each contact point is defined according to a posture r_(i) of the contact surface.

In this case, contact forces (six-axis forces) θ_(i) ^(l) defined by the coordinate systems for each contact point are represented as follows.

θ_(i) ^(l) =[f _(ix) ^(l) ,f _(iy) ^(l) ,f _(iz) ^(l),τ_(ix) ^(l),τ_(iy) ^(l),τ_(iz) ¹]^(T)

Further, the contact forces (six-axis forces) θ_(i) ^(l) can be expressed as follows by using a posture matrix Φ_(i)=rot(r_(i)) of the contact surface.

Note that “rot” represents a function that transforms an Euler angle into a posture matrix.

$\begin{matrix} {\theta_{i}^{l} = {{\begin{bmatrix} \Phi_{i} & O \\ O & \Phi_{i} \end{bmatrix}\theta_{i}}:={T_{i}\theta_{i}}}} & (20) \end{matrix}$

To stabilize the contact points and maintain the contact, it is necessary to satisfy the following three conditions:

(1) to prevent the contact points from being spaced apart from each other;

(2) to prevent the contact points from sliding; and

(3) to prevent the contact points from being removed.

For better understanding of the above three requirements, FIG. 14 illustrates the case where the contact points becomes unstable.

(1) To prevent the contact points from being spaced apart from each other, it is only necessary that the vertical force on the contact surface be positive. In other words, it is necessary to satisfy the following expression.

f _(iz) ^(l)≧0  (21)

(2) To prevent the contact points from sliding, it is only necessary that two-axis forces parallel to the contact surface be less than or equal to a frictional force. In other words, it is necessary to satisfy the following expression as a condition. In this case, the friction coefficient of the contact surface is represented by μ_(i).

−μ_(i) f _(iz) ^(l) ≦f _(ix) ^(l)≦μ_(i) f _(iz) ^(l)

−μ_(i) f _(iz) ^(l) ≦f _(iy) ^(l)≦μ_(i) f _(iz) ^(l)  (22)

(3) The condition of preventing the contact points from being removed is represented as follows by using h vertex coordinates of the contact polygon.

(x _(il) ^(l) ,y _(il) ^(l)), . . . , and (x _(ih) ^(l) ,y _(ih) ^(l))

(In this case, assume that the vertices of the contact polygon are given in clockwise order).

$\begin{matrix} \left\{ \begin{matrix} {{{\left( {x_{i\; 1}^{l} - x_{i\; 2}^{l}} \right)\tau_{ix}^{l}} + {\left( {y_{i\; 1}^{l} - y_{i\; 2}^{l}} \right)\tau_{iy}^{l}}} \leq {\left( {{x_{i\; 1}^{l}y_{i\; 2}^{l}} - {x_{i\; 2}^{l}y_{i\; 1}^{l}}} \right)f_{iz}^{l}}} \\ \vdots \\ {{{\left( {x_{ih}^{l} - x_{i\; 1}^{l}} \right)\tau_{ix}^{l}} + {\left( {y_{ih}^{l} - y_{i\; 1}^{l}} \right)\tau_{iy}^{l}}} \leq {\left( {{x_{ih}^{l}y_{i\; 1}^{l}} - {x_{i\; 1}^{l}y_{ih}^{l}}} \right)f_{iz}^{l}}} \end{matrix} \right. & (23) \end{matrix}$

The above Expressions (21), (22), and (23) can be summarized as follows.

$\begin{matrix} \left. {{\begin{bmatrix} 0 & 0 & {- 1} & 0 & 0 & 0 \\ 1 & 0 & {- \mu_{i}} & 0 & 0 & 0 \\ {- 1} & 0 & {- \mu_{i}} & 0 & 0 & 0 \\ 0 & 1 & {- \mu_{i}} & 0 & 0 & 0 \\ 0 & {- 1} & {- \mu_{i}} & 0 & 0 & 0 \\ 0 & 0 & {{x_{i\; 2}^{l}y_{i\; 1}^{l}} - {x_{i\; 1}^{l}y_{i\; 2}^{l}}} & {x_{i\; 1}^{l} - x_{i\; 2}^{l}} & {y_{i\; 1}^{l} - y_{i\; 2}^{l}} & 0 \\ \; & \; & \; & \vdots & \; & \; \\ 0 & 0 & {{x_{i\; 1}^{l}y_{ih}^{l}} - {x_{ih}^{l}y_{i\; 1}^{l}}} & {x_{ih}^{l} - x_{i\; 1}^{l}} & {y_{ih}^{l} - y_{i\; 1}^{l}} & 0 \end{bmatrix}\theta_{i}^{l}} \leq O}\Leftrightarrow{{\Gamma_{i}\theta_{i}^{l}} \leq O} \right. & (24) \end{matrix}$

Expression (20) is substituted into Expression (24) and is indexed as the j-th sampling point.

Γ_(i) [j]T _(i) [j]ƒ _(i) [j]≦O

E _(i) [j]θ _(i) [j]≦O

E _(i) [j]:=Γ _(i) [j]T _(i) [j]  (25)

Expression (25) represents the condition that should be satisfied to maintain a stable contact of the i-th contact point in the j-th sampling point. To achieve a stable multipoint contact operation, it is necessary to satisfy Expression (25) at all contact points in all the sampling points.

First, the condition that all contact points satisfy Expression (25) in the j-th sampling point can be described as follows.

$\begin{matrix} \left. {\begin{bmatrix} {{E_{1}\lbrack j\rbrack}{\theta_{1}\lbrack j\rbrack}} \\ {{E_{2}\lbrack j\rbrack}{\theta_{2}\lbrack j\rbrack}} \\ \vdots \\ {{E_{n}\lbrack j\rbrack}{\theta_{n}\lbrack j\rbrack}} \end{bmatrix} \leq O}\Leftrightarrow{{\begin{bmatrix} O & {E_{1}\lbrack j\rbrack} & \; & \; & \; \\ \; & \; & {E_{2}\lbrack j\rbrack} & \; & \; \\ \; & \; & \; & \ddots & \; \\ \; & \; & \; & \; & {E_{M}\lbrack j\rbrack} \end{bmatrix}{x\lbrack j\rbrack}} \leq O}\Leftrightarrow{{{E_{a}\lbrack j\rbrack}{x\lbrack j\rbrack}} \leq O} \right. & (26) \end{matrix}$

The condition satisfied at all sampling points can be described as follows.

$\begin{matrix} \left. {\begin{bmatrix} {{E_{a}\left\lbrack {k + 1} \right\rbrack}{x\left\lbrack {k + 1} \right\rbrack}} \\ \vdots \\ {{E_{a}\left\lbrack {k + N} \right\rbrack}{x\left\lbrack {k + N} \right\rbrack}} \end{bmatrix} \leq O}\Leftrightarrow{{\begin{bmatrix} {E_{a}\left\lbrack {k + 1} \right\rbrack} & \; & \; \\ \; & \ddots & \; \\ \; & \; & {E_{a}\left\lbrack {k + N} \right\rbrack} \end{bmatrix}{X\left\lbrack {k + 1} \right\rbrack}} \leq O}\Leftrightarrow{{E_{w}{X\left\lbrack {k + 1} \right\rbrack}} \leq O} \right. & (27) \end{matrix}$

Expression (10) is substituted into this expression.

$\begin{matrix} {\left. {{E_{w}\left( {{G_{1}{x\lbrack k\rbrack}} + {G_{2}{U\lbrack k\rbrack}}} \right)} \leq O}\Leftrightarrow{{E_{w}G_{2}{U\lbrack k\rbrack}} \leq {{- E_{w}}G_{1}{x\lbrack k\rbrack}}}\Leftrightarrow{{{PU}\lbrack k\rbrack} \leq S} \right.\mspace{20mu} {P:={E_{w}G_{2}}}\mspace{20mu} {S:={{- E_{w}}G_{1}{x\lbrack k\rbrack}}}\mspace{20mu} {E_{w}:=\begin{bmatrix} {E_{a}\left\lbrack {k + 1} \right\rbrack} & \; & \; \\ \; & \ddots & \; \\ \; & \; & {E_{a}\left\lbrack {k + N} \right\rbrack} \end{bmatrix}}\mspace{20mu} {{E_{a}\lbrack j\rbrack}:=\begin{bmatrix} O & {E_{1}\lbrack j\rbrack} & \; & \; & \; \\ \; & \; & {E_{2}\lbrack j\rbrack} & \; & \; \\ \; & \; & \; & \ddots & \; \\ \; & \; & \; & \; & {E_{M}\lbrack j\rbrack} \end{bmatrix}}} & (28) \end{matrix}$

Lastly, the problem of stable trajectory generation during multipoint contact can be reduced to the following convex quadratic programming problem by Expressions (16), (19), and (28).

$\begin{matrix} {{{\min\limits_{U}{\frac{1}{2}U^{T}{HU}}} + {F^{T}U}}{{s.t.\mspace{14mu} {PU}} \leq S}{{VU} = W}} & (29) \end{matrix}$

If the problem can be reduced to the convex quadratic programming problem (Quadratic Programming: QP), a solution to the convex quadratic programming problem (QP), which is one of the well-known optimization problems, can be rapidly obtained. (After the solution is obtained, U[k] can be obtained).

After the solution to the QP is obtained, the center-of-gravity trajectory and the contact forces at each contact point can be calculated as follows.

X _(out) [k+1]:=G ₁ x[k]+G ₂ U[k]  (30)

In this manner, X[k+1] which constantly satisfies the constraint conditions (1) to (3) in the prediction interval and minimizes the evaluation function J is obtained.

As is seen from Expressions (7) and (10), X[k+1] represents time-series data on the x-coordinate of the center of gravity, the velocity in the x-axis direction of the center of gravity, the y-coordinate of the center of gravity, the velocity in the y-axis direction of the center of gravity, and the contact forces (six-axis forces) at each contact point.

As described above in the process of expanding the expressions, the center-of-gravity vertical trajectory (z-coordinate) and the moment around the center of gravity, which are corrected in the update calculation, are obtained (which will be described later). That is, the trajectory that achieves a stable movement within the prediction interval can be obtained.

In order to avoid confusion regarding the terms used herein, the terms are explained in more detail below.

As is apparent from the above arithmetic operation process and the results obtained from the above arithmetic operation, the term “trajectory” herein described can be more easily understood if the time-series data on the contact forces (six-axis forces) generated at each contact point, as well as the three-dimensional trajectory of the center of gravity, is taken into consideration.

The concept “trajectory” that allows the mobile robot to move generally includes trajectories of hands and feet, but the “trajectory” used in the above description may include or may not include trajectories of hands and feet.

Based on the premise that the hands and feet are placed according to the contact-point planning, the trajectories of the hands and feet can be substantially automatically determined by interpolation from the time-series data on the contact-point planning, the center-of-gravity trajectory, and the contact forces.

(However, as described later, when the case of changing the contact points is taken into consideration, the trajectories of the hands and feet are also important.)

(Relaxation of Constraints)

The above description is based on the premise that the hands and feet are placed according to the contact-point planning. However, if there are various disturbances, there may be situations where a stable trajectory for the robot cannot be determined merely by placing the hands and feet according to the contact-point planning. For example, assume that a large disturbance is input when, for example, the robot is pressed hard from the back side. Thus, the center of gravity of the robot has a large velocity corresponding to the amount of pressure applied from the back side. Assuming the case where the trajectory is obtained by a model prediction control from the state in which a large velocity is generated at the center of gravity of the robot as described above, that is, assuming the case where Expression (29) is solved to obtain a solution as shown in Expression (30), the contact forces that can be generated at each contact point are not sufficient to stop the robot, which results in a situation in which the trajectory diverges.

For example, the case of a bipedal robot is considered. If the posture of the upper body of the robot is inclined forward when the robot is pressed hard from the back side, it is necessary to prevent the robot from stepping forward to a larger extent than an assumed landing point of an idling leg and thereby prevent the upper body of the robot from falling forward. If the hands and feet are placed as planned, it is difficult to prevent the upper body from falling forward, with the result that robot is further inclined forward and falls down. (In the case of trying to obtain a solution so as to prevent the robot from falling down without changing the planned landing point, it is necessary to generate an excessive contact force on each contact point (sole) and drive each joint with an extremely large force. However, this is impossible.) This indicates a state in which when a large velocity is generated at the center of gravity due to a disturbance, the trajectory cannot be physically stabilized at the contact position of the future planned contact point.

Incidentally, the dynamics in Expression (1) represent the equation of equilibrium for the force related to the center of gravity and the equation of equilibrium for the moment. However, if the equation of equilibrium for the moment is neglected, “divergence” does not occur. For example, assuming the situation in which the robot is in contact with the ground at one point (that is, the situation in which the robot is standing on one leg), the robot has the dynamics of an inverted pendulum. Accordingly, when a large external force with which the robot cannot manage to stay on its foot sole acts on the robot, the center of gravity diverges. However, if the equation of equilibrium for the moment is neglected, the robot has the dynamics of only the equation of equilibrium for the force (relational expression between the force and the acceleration), so that the “divergence” does not occur. That is, it can be considered that the dynamics of an inverted pendulum are generated when the equation of equilibrium for the moment is added to the equation of equilibrium for the force.

Accordingly, the equation of equilibrium for the moment is allowed to break down by introducing slack variables. Specifically, in the constraint condition of Expression (17), slack terms ε_(x) and ε_(y) are introduced into the equation of equilibrium for the moment, thereby allowing the equation of equilibrium for the moment to break down.

$\begin{matrix} {\mspace{79mu} {{{{C\lbrack j\rbrack}{x\lbrack j\rbrack}} = {d\lbrack j\rbrack}}\mspace{20mu} {{C\lbrack j\rbrack}:=\begin{bmatrix} {C_{0}\lbrack j\rbrack} & {C_{1}\lbrack j\rbrack} & \ldots & O & {C_{i + 1}\lbrack j\rbrack} & O & \ldots & {C_{n}\lbrack j\rbrack} \\ O & O & \ldots & I & O & O & \ldots & O \\ O & O & \ldots & O & O & I & \ldots & O \end{bmatrix}}\mspace{20mu} {{d\lbrack j\rbrack}:=\begin{bmatrix} {d_{a}\lbrack j\rbrack} \\ O \\ O \end{bmatrix}}\mspace{20mu} {{C_{0}\lbrack j\rbrack}:=\begin{bmatrix} 0 & 0 & 0 & 0 \\ 0 & 0 & {- {m\left( {{{\overset{¨}{z}}_{g}\lbrack j\rbrack} + g} \right)}} & 0 \\ {m\left( {{{\overset{¨}{z}}_{g}\lbrack j\rbrack} + g} \right)} & 0 & 0 & 0 \end{bmatrix}}{{C_{i}\lbrack j\rbrack}:=\begin{bmatrix} 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & {- \left( {{p_{iz}\lbrack j\rbrack} - {z_{g}\lbrack j\rbrack}} \right)} & {p_{iy}\lbrack j\rbrack} & 1 & 0 & 0 \\ {{p_{iz}\lbrack j\rbrack} - {z_{g}\lbrack j\rbrack}} & 0 & {- {p_{ix}\lbrack j\rbrack}} & 0 & 1 & 0 \end{bmatrix}}\mspace{20mu} {{d_{a}\lbrack j\rbrack}:=\begin{bmatrix} {m\left( {{{\overset{¨}{z}}_{g}\lbrack j\rbrack} + g} \right)} \\ {{{\overset{.}{L}}_{x}\lbrack j\rbrack} + ɛ_{x}} \\ {{{\overset{.}{L}}_{y}\lbrack j\rbrack} + ɛ_{y}} \end{bmatrix}}}} & (31) \end{matrix}$

This slack term is introduced into the evaluation function (Expression (12)).

$\begin{matrix} {{\min \; J_{1}} = {{\frac{1}{2}{\sum\limits_{j = 1}^{N - 1}\; {\sum\limits_{i = 1}^{n}\; \left( {{{\theta_{i}\left\lbrack {k + j + 1} \right\rbrack}^{T}Q_{i}{\theta_{i}\left\lbrack {k + j + 1} \right\rbrack}} + {{{\overset{.}{\theta}}_{i}\left\lbrack {k + j} \right\rbrack}^{T}R_{i}{{\overset{.}{\theta}}_{i}\left\lbrack {k + j} \right\rbrack}}} \right)}}} + {\rho \left( {{ɛ_{x}} + {ɛ_{y}}} \right)}}} & (32) \end{matrix}$

The slack variable term (ρ(|εx|+|εy|) in Expression (32) is added to the evaluation function by placing absolute-value signs around the slack variables. This indicates that the slack variables are set as close to 0 as possible. ρ represents a weight to be multiplied by each slack variable.

When the center of gravity begins to diverge, the acceleration and jerk at the center of gravity increase sharply, so that the first term and the second term in Expression (32) increase sharply. When the equation of equilibrium for the moment is allowed to break down by increasing the slack variables, the divergence is suppressed, and thus the increase in the first term and the second term in Expression (32) is suppressed. However, as a matter of course, the value of the slack variable term increases.

To better understand Expressions (32) and (31), the meaning of the expressions is briefly explained below.

As shown in Expression (32), the slack term is placed outside the double sigma notation.

This conceptually indicates that the solution to the state in which the robot is slightly inclined during the entire prediction interval is allowed when the equation of equilibrium for the moment breaks down in the prediction interval and the center-of-gravity trajectory diverges. (In this case, however, the generation of slack variables is sometimes allowed and sometimes not allowed in the prediction interval. This will be described later.)

The degree at which the generation of slack variables is allowed is determined by the ratio (balance) between the weights Q and R and the slack variable weight ρ. By appropriately setting the balance of the weights (Q, R, ρ), the following function can be achieved. That is, the slack variables (εx, εy) remain 0 when the trajectory does not diverge, and necessary and sufficient slack variables are generated only when the trajectory diverges. As described later, “the slack variable value is nearly equal to the amount of change in position of the contact point”. Accordingly, the user can use the slack variable weight ρ to adjust the degree of sensitivity to disturbances in the case of changing the position of the contact point.

Now, the convex quadratic programming problem is derived by using Expressions (31) and (32).

The slack terms ε_(x) and ε_(y) are substituted as follows so as to remove the absolute value notation.

$\begin{matrix} \left\{ {{{\begin{matrix} {ɛ_{x}:={ɛ_{x\; 1} - ɛ_{x\; 2}}} \\ {ɛ_{y}:={ɛ_{y\; 1} - ɛ_{y\; 2}}} \end{matrix}ɛ_{x\; 1}} \geq 0},{ɛ_{x\; 2} \geq {0ɛ_{y\; 1}} \geq 0},{ɛ_{y\; 2} \geq 0}} \right. & (33) \end{matrix}$

Further, an input vector U is expanded as follows. That is, the slack variables are introduced into the input vector U.

$\begin{matrix} {{{U\lbrack k\rbrack}:={\left. \begin{bmatrix} {u\lbrack k\rbrack} \\ {u\left\lbrack {k + 1} \right\rbrack} \\ \vdots \\ {u\left\lbrack {k + N - 2} \right\rbrack} \\ {u\left\lbrack {k + N - 1} \right\rbrack} \end{bmatrix}\rightarrow{U_{ɛ}\lbrack k\rbrack} \right.:=\begin{bmatrix} {u\lbrack k\rbrack} \\ {u\left\lbrack {k + 1} \right\rbrack} \\ \vdots \\ {u\left\lbrack {k + N - 2} \right\rbrack} \\ {u\left\lbrack {k + N - 1} \right\rbrack} \\ ɛ \end{bmatrix}}}{ɛ:=\begin{bmatrix} ɛ_{x\; 1} & ɛ_{x\; 2} & ɛ_{y\; 1} & ɛ_{y\; 2} \end{bmatrix}^{T}}} & (34) \end{matrix}$

Here, the slack variable terms can be transformed as follows by Expression (33).

min ρ(|ε_(x)|+|ε_(y)|)=min ρ(ε_(x1)+ε_(x2)+ε_(y1)+ε_(y2))

ε_(x1)≧0,ε_(x2)≧0 ε_(y1)≧0,ε_(y2)≧0  (35)

Accordingly, the evaluation function J₁ in Expression (32) is expressed as follows.

$\begin{matrix} {\begin{matrix} {J_{1} = {\frac{1}{2}{\sum\limits_{j = 1}^{N - 1}\; {\sum\limits_{i = 1}^{n}\; \left( {{{\theta_{i}\left\lbrack {k + j + 1} \right\rbrack}^{T}Q_{i}{\theta_{i}\left\lbrack {k + j + 1} \right\rbrack}} +} \right.}}}} \\ {\left. {{{\overset{.}{\theta}}_{i}\left\lbrack {k + j} \right\rbrack}^{T}R_{i}{{\overset{.}{\theta}}_{i}\left\lbrack {k + j} \right\rbrack}} \right) +} \\ {{\rho \left( {ɛ_{x\; 1} + ɛ_{x\; 2} + ɛ_{y\; 1} + ɛ_{y\; 2}} \right)}} \\ {= {{\frac{1}{2}{\sum\limits_{j = 1}^{N - 1}\; \left( {{{x\left\lbrack {k + j + 1} \right\rbrack}^{T}Q_{a}{x\left\lbrack {k + j + 1} \right\rbrack}} + {{u\left\lbrack {k + j} \right\rbrack}^{T}R_{a}{u\left\lbrack {k + j} \right\rbrack}}} \right)}} +}} \\ {{\begin{bmatrix} \rho & \rho & \rho & \rho \end{bmatrix}ɛ}} \\ {= {{\frac{1}{2}{X\left\lbrack {k + 1} \right\rbrack}^{T}Q_{1\; v}{X\left\lbrack {k + 1} \right\rbrack}} + {\frac{1}{2}{U\lbrack k\rbrack}^{T}R_{1\; v}{U\lbrack k\rbrack}} + {\rho^{T}ɛ}}} \\ {= {{\frac{1}{2}{U\lbrack k\rbrack}^{T}{{HU}\lbrack k\rbrack}} + {F^{T}{U\lbrack k\rbrack}} + {\rho^{T}ɛ} + {const}}} \\ {= {{\frac{1}{2}{{U_{ɛ}\lbrack k\rbrack}^{T}\begin{bmatrix} H & O \\ O & O \end{bmatrix}}{U_{ɛ}\lbrack k\rbrack}} + {\begin{bmatrix} F \\ \rho \end{bmatrix}^{T}{U_{ɛ}\lbrack k\rbrack}} + {const}}} \end{matrix}\mspace{20mu} {\rho:=\begin{bmatrix} \rho & \rho & \rho & \rho \end{bmatrix}^{T}}} & (36) \end{matrix}$

Further, when the above expression is summarized, the evaluation function J₁ is expressed as follows.

$\begin{matrix} {{J_{1}:={{\frac{1}{2}{U_{ɛ}\lbrack k\rbrack}^{T}H_{ɛ}{U_{ɛ}\lbrack k\rbrack}} + {F_{ɛ}^{T}{U_{ɛ}\lbrack k\rbrack}} + {const}}}{H_{ɛ}:={{\begin{bmatrix} H & O \\ O & O \end{bmatrix}\mspace{31mu} F_{ɛ}}:=\begin{bmatrix} F \\ \rho \end{bmatrix}}}} & (37) \end{matrix}$

Next, the constraint conditions are considered.

The constraint condition (Expression (31)) is rewritten as follows. (The slack term is explicitly expressed, while the slack term is included in d[j] in the above Expression (31).)

$\begin{matrix} {{{{C\lbrack j\rbrack}{x\lbrack j\rbrack}} = {{d\lbrack j\rbrack} + d_{ɛ}}}{{{d\lbrack j\rbrack}:=\begin{bmatrix} {d_{0}\lbrack j\rbrack} \\ O \\ O \end{bmatrix}},\mspace{31mu} {{d_{0}\lbrack j\rbrack}:=\begin{bmatrix} {m\left( {{{\overset{¨}{z}}_{g}\lbrack j\rbrack} + g} \right)} \\ {{\overset{.}{L}}_{x}\lbrack j\rbrack} \\ {{\overset{.}{L}}_{y}\lbrack j\rbrack} \end{bmatrix}}}} & (38) \end{matrix}$

It should be noted here that slack terms cannot always be generated.

In other words, it is necessary to classify the cases. Classifying the cases means that a sub-interval including a contact point whose position can be changed and a sub-interval including no contact point whose position can be changed are distinguished from each other in the prediction interval.

The generation of the slack variables, which are introduced in Expression (31), indicates deviation from the mechanical equation of equilibrium (equation of equilibrium for the moment) to be physically satisfied by the robot.

As described later, when slack variables are generated, it is necessary to cancel the slack terms by changing the contact position and to finally generate the trajectory that generates no slack variables.

In other words, even when the slack terms are generated, the slack terms cannot be compensated by changing the contact position under the situation in which there is no contact point whose position can be changed. Therefore, the constraints should not be relaxed. This can be easily understood by considering the situation in which, for example, the contact-point planning in the prediction interval indicates that the robot remains standing on both feet as shown in FIG. 15. In this situation, it is impossible to stabilize the robot by changing the contact position, and thus the constraints by the slack variables should not be relaxed.

On the other hand, in the situation as shown in FIG. 16, the left foot and the right foot start landing in the middle of the prediction interval. Thus, there is a sub-interval in which the robot can be stabilized by changing the contact positions of the left foot and the right foot. That is, in this sub-interval, the positions of the contact points can be changed so as to cancel the slack terms. Therefore, in the prediction interval shown in FIG. 16, the first half of the prediction interval indicates “the sub-interval including no contact point whose position can be changed”, and the interval after the time point when the left foot, which is an idling leg, is landed, indicates “the sub-interval including a contact point whose position can be changed”.

If there is at least one contact point whose position can be changed, the interval after the contact point is “the sub-interval including a contact point whose position can be changed”.

Accordingly, all slack terms are 0 in “the sub-interval including no contact point whose position can be changed”.

In the following description, “the sub-interval including a contact point whose position can be changed” is also referred to as “adjustable sub-interval”, and “the sub-interval including no contact point whose position can be changed” is also referred to as “unadjustable sub-interval”.

$\begin{matrix} {d_{ɛ}:=\begin{bmatrix} O \\ O \\ O \end{bmatrix}} & (39) \end{matrix}$

On the other hand, in “the sub-interval including a contact point whose position can be changed” (adjustable sub-interval), slack terms are introduced so that the slack terms can be allowed.

$\begin{matrix} {{d_{ɛ}:=\begin{bmatrix} {D_{ɛ}ɛ} \\ O \\ O \end{bmatrix}}{{D_{ɛ}ɛ} = {\begin{bmatrix} 0 \\ {ɛ_{x\; 1} - ɛ_{x\; 2}} \\ {ɛ_{y\; 1} - ɛ_{y\; 2}} \end{bmatrix} = \begin{bmatrix} 0 \\ ɛ_{x} \\ ɛ_{y} \end{bmatrix}}}{D_{ɛ}:=\begin{bmatrix} 0 & 0 & 0 & 0 \\ 1 & {- 1} & 0 & 0 \\ 0 & 0 & 1 & {- 1} \end{bmatrix}}{ɛ:=\begin{bmatrix} ɛ_{x\; 1} & ɛ_{x\; 2} & ɛ_{y\; 1} & ɛ_{y\; 2} \end{bmatrix}^{T}}} & (40) \end{matrix}$

In this manner, relaxation of the constraints is allowed by using the slack variables only during “the sub-interval including a contact point whose position can be changed” (adjustable sub-interval).

In view of the above, Expression (38) is transformed.

The elements in Expression (38) can be explicitly written as follows.

$\begin{matrix} {\begin{bmatrix} {C\left\lbrack {k + 1} \right\rbrack} & \; & \; & \; \\ \; & {C\left\lbrack {k + 2} \right\rbrack} & \; & \; \\ \; & \; & \ddots & \; \\ \; & \; & \; & {C\left\lbrack {k + N} \right\rbrack} \end{bmatrix}{\quad{\begin{bmatrix} {x\left\lbrack {k + 1} \right\rbrack} \\ {x\left\lbrack {k + 2} \right\rbrack} \\ \vdots \\ {x\left\lbrack {k + N} \right\rbrack} \end{bmatrix} = {\begin{bmatrix} {d\left\lbrack {k + 1} \right\rbrack} \\ {d\left\lbrack {k + 2} \right\rbrack} \\ \vdots \\ {d\left\lbrack {k + N} \right\rbrack} \end{bmatrix} + \begin{bmatrix} d_{ɛ} \\ d_{ɛ} \\ \vdots \\ d_{ɛ} \end{bmatrix}}}}} & (41) \end{matrix}$

When Expression (10) is substituted into Expression (41) and is transposed and simplified, the following expression is obtained.

$\mspace{740mu} {{{(42)\begin{bmatrix} {{C\left\lbrack {k + 1} \right\rbrack}B} & \; & \; & \; & \; & O \\ {{C\left\lbrack {k + 2} \right\rbrack}{AB}} & {{C\left\lbrack {k + 2} \right\rbrack}B} & \; & \; & \; & O \\ \vdots & \; & \ddots & \; & \; & \vdots \\ {{C\begin{bmatrix} {k +} \\ {N - 1} \end{bmatrix}}A^{N - 2}B} & \; & \; & {{C\begin{bmatrix} {k +} \\ {N - 1} \end{bmatrix}}B} & \; & D_{ɛ} \\ {{C\left\lbrack {k + N} \right\rbrack}A^{N - 1}B} & \; & \ldots & {{C\begin{bmatrix} {k +} \\ N \end{bmatrix}}{AB}} & {{C\begin{bmatrix} {k +} \\ N \end{bmatrix}}B} & D_{ɛ} \end{bmatrix}}{U_{ɛ}\lbrack k\rbrack}} = {\quad{\left. {\begin{bmatrix} {d\left\lbrack {k + 1} \right\rbrack} \\ {d\left\lbrack {k + 2} \right\rbrack} \\ \vdots \\ {d\left\lbrack {k + N - 1} \right\rbrack} \\ {d\left\lbrack {k + N} \right\rbrack} \end{bmatrix} - {\begin{bmatrix} {{C\left\lbrack {k + 1} \right\rbrack}A} \\ {{C\left\lbrack {k + 2} \right\rbrack}A^{2}} \\ \vdots \\ {{C\left\lbrack {k + N - 1} \right\rbrack}A^{N - 1}} \\ {{C\left\lbrack {k + N} \right\rbrack}A^{N}} \end{bmatrix}{x\lbrack k\rbrack}}}\mspace{79mu}\Leftrightarrow{V_{ɛ}{U_{ɛ}\lbrack k\rbrack}} \right. = W}}}$

In this case, V_(ε) is expressed as follows.

                                          (43) $V_{ɛ}:=\begin{bmatrix} {{C\left\lbrack {k + 1} \right\rbrack}B} & \; & \; & \; & \; & O \\ {{C\left\lbrack {k + 2} \right\rbrack}{AB}} & {{C\left\lbrack {k + 2} \right\rbrack}B} & \; & \; & \; & O \\ \vdots & \; & \ddots & \; & \; & \vdots \\ {{C\begin{bmatrix} {k + N -} \\ 1 \end{bmatrix}}A^{N - 2}B} & \; & \; & {{C\begin{bmatrix} {k +} \\ {N - 1} \end{bmatrix}}B} & \; & D_{ɛ} \\ {{C\left\lbrack {k + N} \right\rbrack}A^{N - 1}B} & \; & \ldots & {{C\begin{bmatrix} {k +} \\ N \end{bmatrix}}{AB}} & {{C\begin{bmatrix} {k +} \\ N \end{bmatrix}}B} & D_{ɛ} \end{bmatrix}$

The slack terms are introduced in the last row of V_(ε).

In this case, the slack terms in the first half are set to 0 and the slack terms in the latter half are allowed to be generated.

This clearly represents the case where the first half of the prediction interval is “the sub-interval including no contact point whose position can be changed” (unadjustable sub-interval) and the latter half of the prediction interval is “the sub-interval including a contact point whose position can be changed” (adjustable sub-interval).

This is not always the case. For example, the entire prediction interval may be “the sub-interval including no contact point whose position can be changed” (unadjustable sub-interval).

However, since the case where the entire prediction interval is “the sub-interval including no contact point whose position can be changed” (unadjustable sub-interval) requires no further explanation, so the case where the adjustable sub-interval is included in the prediction interval has been described above by way of example.

Further, Expression (28) is expanded in accordance with Uε. While it should be kept in mind that the slack variables are set to be non-negative as shown in Expression (33), an inequality condition expression for stabilizing the contact points to maintain the contact is derived.

$\begin{matrix} \left. {{\begin{bmatrix} P & O \\ O & {- I} \end{bmatrix}\begin{bmatrix} {U\lbrack k\rbrack} \\ ɛ \end{bmatrix}} \leq \begin{bmatrix} S \\ O \end{bmatrix}}\Leftrightarrow{{P_{ɛ}{U_{ɛ}\lbrack k\rbrack}} \leq S_{ɛ}} \right. & (44) \end{matrix}$

When the above Expressions (37), (42), and (44) are summarized, the following expression is expressed as a first convex quadratic programming problem.

$\begin{matrix} {{{\min\limits_{U_{ɛ}}{\frac{1}{2}U_{ɛ}^{T}H_{ɛ}U_{ɛ}}} + {F_{ɛ}^{T}U_{ɛ}}}{{{s.t.\mspace{14mu} P_{ɛ}}U_{ɛ}} \leq S_{ɛ}}{{V_{ɛ}U_{ɛ}} = W}} & (45) \end{matrix}$

The trajectory can be obtained by solving the first convex quadratic programming problem. (Since a slack variable is generated as needed, Uε[k] including the slack variable as needed is obtained. When U[k] is substituted into Expression (30) by ignoring the slack variable, X[k+1] is obtained. That is, the xy center-of-gravity trajectories and the forces (six-axis force) generated at each contact point are obtained.)

At this time, when a slack variable value is allowed to be generated, i.e., when the equation of equilibrium cannot be satisfied in “the sub-interval including a contact point whose position can be changed” (adjustable sub-interval), a solution (Uε[k]) where a value is included in the slack term is obtained.

As a result, the divergence of the trajectory can be avoided, but it is necessary to compensate for the value in the slack term by changing the contact position.

Needless to say, the slack variable is zero when the equation of equilibrium can be satisfied without generating any slack variable, and in “the sub-interval including no contact point whose position can be changed” (unadjustable sub-interval).

Strictly speaking, even when the equation of equilibrium can be satisfied without generating any slack variable, the slack variable is not equal to zero. As a result of calculation, an extremely small value is generated as the slack variable. For example, a solution where the slack variable is generated in the order of 10⁻¹⁰ or the like is obtained. However, based on common sense, it can be said that the value in the order of 10⁻¹⁰ or the like is substantially zero.

(Calculation of the Amount of Change in Contact Position)

A calculation process in which the amount of change in the contact position necessary for maintaining the stability is obtained from the generated slack variable value will be described.

When Expression (45) is solved, Uε[k] is obtained and E is also obtained. Accordingly, εx and εy are obtained by using Expression (33).

Here, the amount Δpi in change of the contact position of the i-th contact point is expressed as follows and is added to the equation of equilibrium for the moment in Expression (6). As a result, the following Expression (46) is obtained.

$\begin{matrix} \left. \mspace{79mu} {{{\Delta \; p_{i}}:=\begin{bmatrix} {\Delta \; p_{ix}} & {\Delta \; p_{iy}} & {\Delta \; p_{iz}} \end{bmatrix}^{T}}{{{{\overset{.}{L}}_{x}\lbrack j\rbrack} + ɛ_{x}} = {{{- {F_{z}\lbrack j\rbrack}}{y_{g}\lbrack j\rbrack}} + {\sum\left( {{\left( {{p_{iy}\lbrack j\rbrack} + {\Delta \; p_{iy}}} \right){f_{iz}\lbrack j\rbrack}} - {\left( {{p_{iz}\lbrack j\rbrack} + {\Delta \; p_{iz}} - {z_{g}\lbrack j\rbrack}} \right){f_{iy}\lbrack j\rbrack}} + {\tau_{ix}\lbrack j\rbrack}} \right)}}}{{{{\overset{.}{L}}_{y}\lbrack j\rbrack} + ɛ_{y}} = {{{F_{z}\lbrack j\rbrack}{x_{g}\lbrack j\rbrack}} + {\sum{\left( {{p_{iz}\lbrack j\rbrack} + {\Delta \; p_{iz}} - {z_{g}\lbrack j\rbrack}} \right){f_{ix}\lbrack j\rbrack}}} - {\left( {{p_{ix}\lbrack j\rbrack} + {\Delta \; p_{ix}}} \right){f_{iz}\lbrack j\rbrack}} + {\tau_{iy}\lbrack j\rbrack}}}} \right) & (46) \end{matrix}$

When Expression (6) that should be primarily satisfied is subtracted from Expression (46), the following expression is obtained.

$\begin{matrix} \left\{ \begin{matrix} {{\sum\left( {{\Delta \; p_{iy}{f_{iz}\lbrack j\rbrack}} - {\Delta \; p_{iz}{f_{iy}\lbrack j\rbrack}}} \right)} = ɛ_{x}} \\ {{\sum\left( {{\Delta \; p_{iz}{f_{ix}\lbrack j\rbrack}} - {\Delta \; p_{ix}{f_{iz}\lbrack j\rbrack}}} \right)} = ɛ_{y}} \end{matrix} \right. & (47) \end{matrix}$

A case in which the change of the contact position is limited within the contact surface will be considered below.

Specifically, the operation for changing the contact position is performed in the form of a translation within the contact surface. In the case of walking, the operation corresponds to a translation on the ground of the planned landing position on the ground.

(The position where the foot(feet) lands (or the hand(s) is(are) placed) can be moved more freely. If the robot is informed of the types of surfaces in the space, the position where the foot(feet) lands (or the hand(s) is(are) placed) can be more freely selected. For example, the position where the hand(s) is (are) placed can be changed from a lower shelf to an upper shelf. However, the computing load increases as a matter of course.)

Here, a contact position movement amount Δp_(i) ^(l) (the superscript indicates the lower-case letter “l”) in the coordinate system of the contact point is introduced.

Δp _(i) ^(l) =[Δp _(ix) ^(l) Δp _(iy) ^(l)]^(T)  (48)

As shown in FIG. 17, Δp_(ix) ^(l) and Δp_(iy) ^(l) are defined by the amount of change in the xy direction in the local coordinate system of the contact point. The movement of the contact position in the coordinate system of the contact point is transformed into a global coordinate system.

$\begin{matrix} {\begin{bmatrix} {\Delta \; p_{ix}} \\ {\Delta \; p_{iy}} \\ {\Delta \; p_{iz}} \end{bmatrix} = {{\Phi_{i}\begin{bmatrix} {\Delta \; p_{ix}^{l}} \\ {\Delta \; p_{iy}^{l}} \\ 0 \end{bmatrix}} = {{\begin{bmatrix} r_{11}^{i} & r_{12}^{i} & r_{13}^{i} \\ r_{21}^{i} & r_{22}^{i} & r_{23}^{i} \\ r_{31}^{i} & r_{32}^{i} & r_{33}^{i} \end{bmatrix}\begin{bmatrix} {\Delta \; p_{ix}^{l}} \\ {\Delta \; p_{iy}^{l}} \\ 0 \end{bmatrix}} = \begin{bmatrix} {{r_{11}^{i}\Delta \; p_{ix}^{l}} + {r_{12}^{i}\Delta \; p_{iy}^{l}}} \\ {{r_{21}^{i}\Delta \; p_{ix}^{l}} + {r_{22}^{i}\Delta \; p_{iy}^{l}}} \\ {{r_{31}^{i}\Delta \; p_{ix}^{l}} + {r_{32}^{i}\Delta \; p_{iy}^{l}}} \end{bmatrix}}}} & (49) \end{matrix}$

When the above expression is substituted into Expression (47), the following expression can be obtained.

$\begin{matrix} \left\{ \begin{matrix} {{\sum\left( {{\left( {{r_{21}^{i}\Delta \; p_{ix}^{l}} + {r_{22}^{i}\Delta \; p_{iy}^{l}}} \right){f_{iz}\lbrack j\rbrack}} - {\left( {{r_{31}^{i}\Delta \; p_{ix}^{l}} + {r_{32}^{i}\Delta \; p_{iy}^{l}}} \right){f_{iy}\lbrack j\rbrack}}} \right)} = ɛ_{x}} \\ {{\sum\left( {{\left( {{r_{31}^{i}\Delta \; p_{ix}^{l}} + {r_{32}^{i}\Delta \; p_{iy}^{l}}} \right){f_{ix}\lbrack j\rbrack}} - {\left( {{r_{11}^{i}\Delta \; p_{ix}^{l}} + {r_{12}^{i}\Delta \; p_{iy}^{l}}} \right){f_{iz}\lbrack j\rbrack}}} \right)} = ɛ_{y}} \end{matrix}\Rightarrow\left\{ \begin{matrix} {{\sum\left( {{\left( {{r_{21}^{i}{f_{iz}\lbrack j\rbrack}} - {r_{31}^{i}{f_{iy}\lbrack j\rbrack}}} \right)\Delta \; p_{ix}^{l}} + {\left( {{r_{22}^{i}{f_{iz}\lbrack j\rbrack}} - {r_{32}^{i}{f_{iy}\lbrack j\rbrack}}} \right)\Delta \; p_{iy}^{l}}} \right)} = ɛ_{x}} \\ {{\sum\left( {{\left( {{r_{31}^{i}{f_{ix}\lbrack j\rbrack}} - {r_{11}^{i}{f_{iz}\lbrack j\rbrack}}} \right)\Delta \; p_{ix}^{l}} - {\left( {{r_{32}^{i}{f_{ix}\lbrack j\rbrack}} - {r_{12}^{i}{f_{iz}\lbrack j\rbrack}}} \right)\Delta \; p_{iy}^{l}}} \right)} = ɛ_{y}} \end{matrix}\Rightarrow\left\{ \begin{matrix} {{\sum\left( {{{\sigma_{11}^{i}\lbrack j\rbrack}\Delta \; p_{ix}^{l}} + {{\sigma_{12}^{i}\lbrack j\rbrack}\Delta \mspace{11mu} p_{iy}^{l}}} \right)} = ɛ_{x}} \\ {{\sum\left( {{{\sigma_{11}^{i}\lbrack j\rbrack}\Delta \; p_{ix}^{l}} + {{\sigma_{12}^{i}\lbrack j\rbrack}\Delta \mspace{11mu} p_{iy}^{l}}} \right)} = ɛ_{y}} \end{matrix} \right. \right. \right. & (50) \end{matrix}$

where:

σ₁₁ ^(i) [j]:=r ₂₁ ^(i) f _(iz) [j]−r ₃₁ ^(i) f _(iy) [j]

σ₁₂ ^(i) [j]:=r ₂₂ ^(i) f _(iz) [j]−r ₃₂₃ ^(i) f _(iy) [j]

σ₂₁ ^(i) [j]:=r ₃₁ ^(i) f _(ix) [j]−r ₁₁ ^(i) f _(iz) [j]

σ₂₂ ^(i) [j]:=r ₃₂ ^(i) f _(ix) [j]−r ₁₂ ^(i) f _(iz) [j]

In this case, the condition for the amount of change in the contact position necessary to compensate for the generated slack variable can be expressed as follows.

if ε_(x)≧0

Σ(σ₁₁ ^(i) [j]Δp _(ix) ^(l)+σ₁₂ ^(i) [j]Δp _(iy) ^(l))≧ε_(x)

else

Σ(σ₁₁ ^(i) [j]Δp _(ix) ^(l)+σ₁₂ ^(i) [j]Δp _(iy) ^(l))≦ε_(x)

end

if ε_(y)≧0

Σ(σ₂₁ ^(i) [j]Δp _(ix) ^(l)+σ₂₂ ^(i) [j]Δp _(iy) ^(l))≧ε_(y)

else

Σ(σ₁₁ ^(i) [j]Δp _(ix) ^(l)+σ₂₂ ^(i) [j]Δp _(iy) ^(l))≦ε_(y)

end

Expression (51) represents that the effect (left-hand side) obtained by changing the contact position is preferably equal to or greater than the slack variable (right-hand side).

The above expression can be summarized as follows in terms of symbols.

$\begin{matrix} \left\{ \begin{matrix} {{{- {{sgn}\left( ɛ_{x} \right)}}{\sum\left( {{{\sigma_{11}^{i}\lbrack j\rbrack}\Delta \; p_{ix}^{l}} + {{\sigma_{12}^{i}\lbrack j\rbrack}\Delta \mspace{11mu} p_{iy}^{l}}} \right)}} \leq {{- {{sgn}\left( ɛ_{x} \right)}}ɛ_{x}}} \\ {{{- {{sgn}\left( ɛ_{y} \right)}}{\sum\left( {{{\sigma_{21}^{i}\lbrack j\rbrack}\Delta \; p_{ix}^{l}} + {{\sigma_{22}^{i}\lbrack j\rbrack}\Delta \mspace{11mu} p_{iy}^{l}}} \right)}} \leq {{- {{sgn}\left( ɛ_{y} \right)}}ɛ_{y}}} \end{matrix} \right. & (52) \end{matrix}$

Expression (52) can be reordered as follows.

$\begin{matrix} {{{\sum{{\Lambda_{i}\lbrack j\rbrack}\Delta \; p_{i}^{l}}} \leq \sigma_{ɛ}}{{\Lambda_{i}\lbrack j\rbrack}:={- \begin{bmatrix} {{{sgn}\left( ɛ_{x} \right)}{\sigma_{11}^{i}\lbrack j\rbrack}} & {{{sgn}\left( ɛ_{x} \right)}{\sigma_{12}^{i}\lbrack j\rbrack}} \\ {{{sgn}\left( ɛ_{y} \right)}{\sigma_{21}^{i}\lbrack j\rbrack}} & {{{sgn}\left( ɛ_{y} \right)}{\sigma_{22}^{i}\lbrack j\rbrack}} \end{bmatrix}}}{\sigma_{ɛ}:=\begin{bmatrix} {{- {{sgn}\left( ɛ_{x} \right)}}ɛ_{x}} \\ {{- {{sgn}\left( ɛ_{y} \right)}}ɛ_{y}} \end{bmatrix}}} & (53) \end{matrix}$

Incidentally, the amount of change in the contact position is allowed only when there is a target contact point, as a matter of course.

For example, in the example shown in FIG. 18, there is no amount of change in the contact position in “the sub-interval including no contact point whose position can be changed” (unadjustable sub-interval).

Also in “the sub-interval including a contact point whose position can be changed” (adjustable sub-interval), the amount of change in the contact position can be defined only in the location including a target in which the position where the foot(feet) lands (or the hand(s) is(are) placed) can be actually changed.

Specifically, Δp_(LF2) ^(l) (change in the landing position of the left foot) can be allowed within the range of k+s to k+N, and Δp_(RF2) ^(l) (change in the landing position of the right foot) can be allowed only when k+N. (For ease of understanding, “1” is represented as “LF” and “RF”.)

Accordingly, when Expression (41) is rewritten in accordance with the example shown in FIG. 17, for example, the following expression is obtained.

Λ_(LF2) [j]Δp ^(l) _(LF2)≦σ_(ε)(j=k++s, . . . ,k+N−1)

Λ_(LF2) [j]Δp ^(l) _(LF2)+Λ_(RF2) [j]Δp ^(l) _(RF2)≦σ_(ε)(j=k+N)

Further, the vector U_(Δ) in which the contact position change amounts are vertically arranged is defined.

$\begin{matrix} {U_{\Delta}:=\begin{bmatrix} {\Delta \; p_{1}^{l}} \\ {\Delta \; p_{2}^{l}} \\ \vdots \end{bmatrix}} & (55) \end{matrix}$

however in this example,

$U_{\Delta}:=\begin{bmatrix} {\Delta \; p_{{LF}\; 2}^{l}} \\ {\Delta \; p_{{RF}\; 2}^{l}} \end{bmatrix}$

Expression (54) can be summarized as follows.

$\begin{matrix} \left. {{\begin{bmatrix} {\Lambda_{{LF}\; 2}\left\lbrack {k + s} \right\rbrack} & O \\ \vdots & \vdots \\ {\Lambda_{{LF}\; 2}\left\lbrack {k + N - 1} \right\rbrack} & O \\ {\Lambda_{{LF}\; 2}\left\lbrack {k + N} \right\rbrack} & {\Lambda_{{RF}\; 2}\left\lbrack {k + N} \right\rbrack} \end{bmatrix}\begin{bmatrix} {\Delta \; p_{{LF}\; 2}^{l}} \\ {\Delta \; p_{{RF}\; 2}^{l}} \end{bmatrix}} \leq \begin{bmatrix} \sigma_{ɛ} \\ \vdots \\ \sigma_{ɛ} \\ \sigma_{ɛ} \end{bmatrix}}\Leftrightarrow{{P_{\Delta}U_{\Delta}} \leq S_{\Delta}} \right. & (56) \end{matrix}$

where:

$P_{\Delta}:=\begin{bmatrix} {\Lambda_{{LF}\; 2}\left\lbrack {k + s} \right\rbrack} & O \\ \vdots & \vdots \\ {\Lambda_{{LF}\; 2}\left\lbrack {k + N - 1} \right\rbrack} & O \\ {\Lambda_{{LF}\; 2}\left\lbrack {k + N} \right\rbrack} & {\Lambda_{{RF}\; 2}\left\lbrack {k + N} \right\rbrack} \end{bmatrix}$ $S_{\Delta}:=\begin{bmatrix} \sigma_{ɛ} \\ \vdots \\ \sigma_{ɛ} \\ \sigma_{ɛ} \end{bmatrix}$

Assuming that it is preferable to minimize the amount of change in the contact position (in other words, to provide a minimum necessary amount of change in the contact position), the evaluation function of the following expression is further introduced.

$\begin{matrix} {{\min \; J_{2}} = {\frac{1}{2}{\sum{{\Delta \; p_{i}^{l}}}^{2}}}} & (57) \end{matrix}$

Expression (57) can be summarized as follows.

$\begin{matrix} {J_{2} = {{\frac{1}{2}{\sum{{\Delta \; p_{i}^{l}}}^{2}}} = {\frac{1}{2}U_{\Delta}^{T}U_{\Delta}}}} & (58) \end{matrix}$

When Expression (56) and Expression (58) are simplified, the following expression is finally obtained.

$\begin{matrix} {{\min\limits_{U_{\Delta}}{\frac{1}{2}U_{\Delta}^{T}U_{\Delta}}}{{{s.t.\mspace{14mu} P_{\Delta}}U_{\Delta}} \leq S_{\Delta}}} & (59) \end{matrix}$

In this manner, a second convex quadratic programming problem can be constructed.

By solving this problem, the minimum amount of change in the contact position necessary for maintaining the stability can be obtained.

The function of, for example, limiting the amount of change in the contact force within a certain convex region (in consideration of a movable range) can also be easily achieved by adding a condition to the inequality constraint condition shown in Expression (59).

(Control of Mobile Robot)

A movement control method for the mobile robot will be described.

FIG. 19 shows the entire flow of the movement control method for the mobile robot.

The main steps of controlling the movement of the mobile robot include: setting of contact-point planning (ST100); trajectory generation (ST200); motion instruction (ST300); and execution of a motion control (ST400).

As outlined above, in the setting of contact-point planning (ST100), the user inputs, to the mobile robot, the multipoint contact movement (FIG. 7) indicating where and how to place the hands and feet and the order in which the hands and feet are placed.

The input contact-point planning is stored in the contact-point planning setting unit 221 of the controller 210.

The trajectory generation step (ST200) will be described.

FIGS. 20, 21, and 22 are detailed flowcharts for explaining the procedure of the trajectory generation step (ST200).

The trajectory generation step (ST200) is executed by the trajectory generation unit 222 of the controller 210.

First, in ST201, the trajectory generation unit 222 sets the current state x[k]. In this case, the x-coordinate of the center of gravity, the velocity in the x-axis direction of the center of gravity, the y-coordinate of the center of gravity, the velocity in the y-axis direction of the center of gravity, and the contact forces (six-axis forces) at each contact point, all of which are obtained at that time, should be set as the current state (x[k]). The contact forces at each contact point can be obtained by the detected values from the force sensors 29. The x-coordinate of the center of gravity, the velocity in the x-axis direction of the center of gravity, the y-coordinate of the center of gravity, and the velocity in the y-axis direction of the center of gravity are values which are estimated and obtained from the current state of the mobile robot. For example, the x-coordinate of the center of gravity, the velocity in the x-axis direction of the center of gravity, the y-coordinate of the center of gravity, and the velocity in the y-axis direction of the center of gravity may be obtained by acquiring sensor values from each encoder and grasping the entire posture of the mobile robot. Alternatively, the center-of-gravity position may be corrected by grasping the degree of inclination (deviation) of the actual posture of the mobile robot from the assumed posture.

Next, in ST202A, the weights (Q_(i), R_(i)) are set to the respective contact point candidates. (Note that in the expansion of the above expression, the weights (Q_(i), R_(i)) are incorporated into the evaluation function J in Expression (11). The weights (Q_(i), R_(i)) are also taken over in the evaluation function J₁ of Expression (32) in which the constraints are relaxed and the slack term is incorporated.)

The weights (Q_(i), R_(i)) are preliminarily set and input by the user, and the trajectory generation unit 222 reads the weights as needed and updates and sets the read weights. (If it is not necessary to update the weights, there is no need to reconfigure the weights.)

When the forces are distributed equally to all contact point candidates, for example, all Q_(i) may be set to 1 and all R_(i) may be set to 1×10⁻⁶. Further, more detailed settings can be made.

The adjustment of the weights enables adjustments to be made, such as an adjustment of the degree at which the change in contact force is made smooth, and an adjustment in which a smaller force is applied to the hands.

For example, assume that the same weight is applied. As a result of arithmetic operations, such a solution that the forces are equally applied to the placed hands and feet (at each contact point) can be obtained. It is generally considered that this case is the most stable form (posture) of the mobile robot.

On the other hand, the allocation of the weights need to be changed in some cases.

For example, in the case where the mobile robot has hands which are weaker (more fragile) than its feet and it is not preferable to apply an excessive load to the hands, the weight on the hands is “increased”. As the weight is increased, the value θi and the like of the hands, which are multiplied by the weight, decrease, so that the allocation of the contact force to the hands is reduced.

Further, assume the case where one hand is placed on a table and the other hand is stretched forward to a large extent. In this case, it is insufficient to distribute the forces equally to the hands and feet. It is necessary to further incline the body forward. In order to incline the body and further shift the center of gravity forward, it is necessary to slightly increase the allocation of the forces to be applied to one hand. In this case, it is necessary to make such an adjustment that the weight on one hand is reduced so that the body can be inclined and the other hand can be stretched forward to a large extent.

While there is no need to change the weights in a general operation, the weights may be changed every time the trajectory is updated depending on the state.

In ST202B, the slack term weight ρ is set.

Note that the slack term weight ρ is introduced in Expression (32). As described above, the degree at which the generation of slack variables is allowed can be determined by the ratio (balance) between the weights Q and R and the slack variable weight ρ.

Next, in ST203, the prediction interval is set.

Specifically, as described above with reference to FIG. 8, a predetermined duration (for example, 1.6 seconds) from the present time is set as the prediction interval.

Next, in ST204, the contact point position and the posture (pi, ri) in the prediction interval are set. This operation corresponds to cutting out the contact-point planning in the prediction interval from the contact-point planning (FIG. 7).

Next, in ST205, the center-of-gravity vertical trajectory and the moment around the center of gravity are temporarily set.

Expression (45) (convex quadratic programming problem) is solved in the next arithmetic operation step (ST206), to thereby obtain the trajectory in the xy direction of the center of gravity, the contact forces at each contact point, and the differential values of the contact forces. However, the solution is obtained based on the premise that the position and posture at each contact point, the center-of-gravity vertical trajectory, and the moment around the center of gravity are given.

The position and posture at each contact point within the prediction interval are given by the contact-point planning.

On the other hand, the center-of-gravity vertical trajectory and the moment around the center of gravity within the prediction interval are unknown. Accordingly, the center-of-gravity vertical trajectory and the moment around the center of gravity are temporarily set one time so that Expression (45) (convex quadratic programming problem) can be solved in the arithmetic operation step (ST206).

In the first control cycle, for example, the center-of-gravity vertical trajectory and the moment around the center of gravity may be temporarily set in such a manner that the center-of-gravity vertical trajectory and the moment around the center of gravity are not moved from the current state within the prediction interval. (For example, it may be assumed that the height of the center of gravity is not changed.)

Alternatively, the center-of-gravity vertical trajectory and the moment around the center of gravity which are used in the previous control cycle may be used as temporary values.

The prediction interval is a small amount of time, such as 1.6 seconds. Also in the stable trajectory finally obtained, a change in the height of the center of gravity during the prediction interval is small.

Accordingly, it is possible to proceed with the first provisional calculation assuming that the height of the center of gravity is not changed, or assuming that the center-of-gravity vertical trajectory and the moment around the center of gravity which are used in the previous control cycle are used as temporary values.

In the subsequent step (ST209), the center-of-gravity vertical trajectory and the moment around the center of gravity are corrected so as to stabilize the motion of the mobile robot also in the trajectory in the xy direction of the center of gravity which is obtained in the provisional arithmetic operation. Then the loop is repeated to perform the arithmetic operation (ST206) again by using the corrected center-of-gravity vertical trajectory and the corrected moment around the center of gravity. Therefore, it can be understood that the stable trajectory including the center-of-gravity vertical trajectory can be appropriately obtained at last.

Here, the moment around the center of gravity is defined.

When the mobile robot is considered as a link structure in which links are joined together at each joint, the moment around the center of gravity is the total value of moments generated around the center of gravity by the motion of mass points distributed to the links.

Assume that the mobile robot is represented by a multi-mass-point model as shown in FIG. 23A and M mass points each have the following parameters.

mass: m_(i),

position: s_(i)=[x_(i), y_(i), z_(i)]^(T)

Assuming that the center of gravity of the entire mobile robot is represented by G=(G_(x), G_(y), G_(z))^(T), the moment around the center of gravity is expressed as follows (see FIG. 23B).

$\begin{matrix} {\overset{.}{L} = {\sum\limits_{i = 1}^{M}\; {{m_{i}\left( {s_{i} - G} \right)} \times \left( {{\overset{¨}{s}}_{i} - \overset{¨}{G}} \right)}}} & (60) \end{matrix}$

Next, in ST206A, a first arithmetic operation step is executed. Specifically, the first convex quadratic programming problem shown in Expression (45) is solved. A trajectory is obtained in which the center of gravity (in this case, x and y correspond to the center of gravity) can be stably shifted, while the forces are appropriately distributed to each contact point within the prediction interval and the contact force is achieved.

Specifically, Hε, Fε, Pε, Sε, Vε, and Wε are obtained, and Uε[k] is also obtained. (Uε[k] represents a vector of contact force differential values. As described above, the vector is expanded so as to introduce the slack variables in Expression (34). Further, in Vε, “the sub-interval including no contact point whose position can be changed” (unadjustable sub-interval) and “the sub-interval including a contact point whose position can be changed” (adjustable sub-interval) are distinguished from each other as described above. See Expression (43).)

Furthermore, X_(out)[k+1] is obtained by Expression (30) (ST206B). (X_(out)[k+1] represents time-series data on the x-coordinate of the center of gravity, the velocity in the x-axis direction of the center of gravity, the y-coordinate of the center of gravity, the velocity in the y-axis direction of the center of gravity, and the contact forces (six-axis forces) at each contact point.)

Further, in ST207A, a second arithmetic operation step is executed. Specifically, the second convex quadratic programming problem shown in Expression (59) is solved. By solving this problem, a minimum contact position change amount necessary for maintaining the stability can be obtained. Accordingly, the contact point position is corrected in ST207B.

Subsequently, the trajectories of the hands and feet are obtained by interpolation in ST208.

In the contact-point planning, only the contact point and the posture obtained at that time are set. Further, the contact position is changed so as to maintain the stability in the previous step ST207B. Based on these factors, the interpolated trajectories of the hands and feet are obtained so as to connect the contact points. As a result, as shown in FIG. 24, the contact points instructed in the contact-point planning are interpolated.

Next, in ST209, an operation for correcting the center-of-gravity vertical trajectory and the moment around the center of gravity is carried out.

First, the center-of-gravity vertical trajectory is corrected.

The trajectory in the xy direction of the center of gravity and the trajectories of the hands and feet are obtained in the previous steps. (Also, the center-of-gravity vertical trajectory is temporarily set) Based on these factors, a change in the posture of the mobile robot within the prediction interval can be estimated. However, at this time, if there is an unstable factor, for example, if the knees or arms are fully stretched, the center-of-gravity vertical trajectory is adjusted so as to maintain the stability. For example, an adjustment is made in such a manner that the center-of-gravity vertical trajectory is lowered if the knees are about to be fully stretched. After the posture of the mobile robot within the prediction interval is determined, the moment around the center of gravity is calculated based on the posture.

Next, in ST210, it is determined whether steps ST206A to ST209 are repeated at least one time. If the steps are not repeated, the process returns to ST206A to obtain a solution to the first convex quadratic programming problem.

The center-of-gravity vertical trajectory and the moment around the center of gravity, which are corrected by repeating the arithmetic operation (ST206), are used to obtain X_(out)[k+1] and UΔ[k] again.

In this manner, the time-series data on the center-of-gravity position, the center-of-gravity velocity, a necessary change in the contact point position, and the contact force, which are necessary for achieving the stable movement of the mobile robot within the prediction interval, is obtained (ST211).

Thus, the stable trajectory is generated in the prediction interval having a certain duration, and only the first point is used as the current input value. In other words, only the first point is output to the motion control unit 223 as an operation instruction (ST300).

The period is updated (ST213), that is, the current time is advanced by a small amount of time, until a predetermined end condition is satisfied (ST213), and the process returns to the first step (ST201) to repeat the loop. In this manner, the trajectory generation is repeated while the prediction interval is advanced by a small amount of time. Thus, the calculation of trajectories for stably achieving the multipoint contact movement is carried out.

Though not a feature of this exemplary embodiment, a method in which the motion control unit 223 that has received the operation instruction controls the movement of the mobile robot 100 (drives its joints) will be briefly described.

In this exemplary embodiment, the contact forces at each contact point, as well as the center of gravity and the trajectories of the hands and feet, are given as the operation instruction. Accordingly, the step of performing fine adjustment of the positions (trajectories) of the hands and feet so as to generate the contact forces instructed at each contact point is required (ST410). For example, in the case where a relatively large contact force is instructed when the hand of the mobile robot is placed on the table, the mobile robot performs fine adjustment of the trajectory of the hand so that the hand is pressed against the table.

The motors provided at the respective joints are driven to cause the entire body of the mobile robot to operate (ST420). This allows the mobile robot to operate.

During the execution of the operation (ST400), a deviation occurs between the real robot and the model due to the contact force control (ST410), a failure to properly drive the joints as instructed, or the effect of a disturbance. Accordingly, in the loop of trajectory generation (ST200), it is necessary to set the current state x each time (ST201).

As described above, according to this exemplary embodiment, the mobile robot can autonomously move while automatically generating a stable center-of-gravity trajectory based on planning of the set contact points.

At this time, if the stability of the robot cannot be maintained by the landing of the feet (placing the hand(s)) according to the contact-point planning, the divergence of the trajectory is avoided by changing the contact position as needed, thereby enabling the robot to continuously perform a stable motion.

As can be seen from the meaning of the evaluation function J₁, which is used for trajectory generation, the change in the force associated with switching of contact points (transition of contact states) is made smooth, thereby achieving a stable and smooth movement of the mobile robot.

Experimental Examples

Experimental examples will be described below.

Assume that the contact-point planning that allows the hands and feet of a quadruped walking robot to be randomly placed is given to the robot.

FIG. 25 shows a timeline of the contact-point planning.

FIGS. 26 and 27 show simulation results obtained when there is no disturbance.

FIG. 26 shows snapshots of execution results.

FIG. 27 is graph showing a center-of-gravity position, a reaction force center position, and a load in the vertical direction of each contact point during the execution.

In this case, it is obvious that the contact point reaction force associated with switching of contact points smoothly shifts, while the hands and feet are placed on the landing positions (or positions where the hand(s) is(are) placed) according to the contact-point planning, and a smooth movement of the center of gravity is achieved.

On the other hand, FIGS. 28, 29, and 30 show simulation results obtained when a disturbance is caused to occur.

FIG. 28 shows snapshots of execution results. In this case, assume that a large disturbance is input at around 2.2 seconds.

FIG. 29 is graph showing a center-of-gravity position, a reaction force center position, and a load in the vertical direction of each contact point during the execution.

FIG. 30 is a graph showing a slack variable value.

When FIG. 26 and FIG. 28 are compared, it is obvious that the robot is prevented from overturning by changing the landing position of the left foot immediately after the input of the disturbance (at around 2.2 seconds). As seen from FIG. 30, a slack variable is generated immediately after the input of the disturbance, and after that, the slack variable becomes 0 in the state where there is no disturbance.

Note that the present invention is not limited to the above exemplary embodiments and can be modified as appropriate without departing from the scope of the invention.

The hardware configuration of the mobile robot is not particularly limited. For example, the mobile robot may be a bipedal robot or a quadruped walking robot. Further, the number of the hands and legs of the mobile robot is not particularly limited. For example, the mobile robot may have six legs or eight legs.

However, it is necessary that at least one contact point contact the ground. (Contacting the ground may include a case where the hand(s) of the robot is(are) placed on the wall.)

In an extreme case, for example, the mobile robot 100 may have one leg and one hand and move while causing its hand and foot to be alternately placed on the floor and the wall as shown in FIG. 31.

The process for obtaining a necessary amount of change in the contact point (ST207A) and changing the contact point based on the obtained amount of change may be carried out as needed.

In other words, a determination step of comparing the magnitude of a slack variable with a predetermined threshold may be incorporated between ST206A and ST207A, to thereby determine if a slack variable equal to or greater than substantially zero is generated.

When a slack variable equal to or greater than substantially zero is generated, it is necessity to change the contact point position. When the slack variable is substantially zero, there is no need to execute steps ST207A and ST207B.

Alternatively, ST207A may be executed regardless of the magnitude of each slack variable, and the determination step of comparing the amount of change in the contact point position with the predetermined threshold may be incorporated between ST207A and ST208B.

When the amount of change in the contact point position is equal to or greater than a predetermined value, it is necessary to change the contact point (ST207B). When the amount of change in the contact point position is substantially zero, there is no need to execute ST207B.

While the threshold is determined depending on the accuracy of the desired stability, it can be said that it is necessary to change the contact point when the amount of change in the contact point position is 1 mm or 2 mm.

Depending on the accuracy of the desired stability, 0.01 mm or 0.02 mm may be set as a threshold for changing the contact point.

A threshold for determining the magnitude of a slack variable can also be obtained by the back calculation of the slack variable when the amount of change in the contact point position is 1 mm or 2 mm.

From the invention thus described, it will be obvious that the embodiments of the invention may be varied in many ways. Such variations are not to be regarded as a departure from the spirit and scope of the invention, and all such modifications as would be obvious to one skilled in the art are intended for inclusion within the scope of the following claims. 

What is claimed is:
 1. A movement control method for a mobile robot that moves while causing two or more mobile means to alternately contact the ground, the movement control method comprising: a contact-point planning setting step of setting contact-point planning using time-series data representing positions of contact points where the mobile means contact the ground; and a trajectory generation step of generating a trajectory for a movement of the mobile robot while causing the mobile means to contact the ground at the contact points as set in the contact-point planning setting step, wherein the trajectory generation step includes changing the positions of the contact points when the trajectory diverges.
 2. The movement control method for a mobile robot according to claim 1, wherein the trajectory generation step includes: constructing a prediction model that describes a relationship between a control input to the mobile robot and a motion of the mobile robot, the prediction model representing a state change of the mobile robot in a prediction interval of a predetermined duration; obtaining, in the prediction interval, time-series data on the control input to ensure the stability of the mobile robot, by using a predetermined stability evaluation criterion and a constraint condition based on a mechanical balance; obtaining a trajectory of the mobile robot based on the obtained time-series data on the control input and the prediction model; introducing a slack variable for relaxing a constraint into the constraint condition; introducing a slack variable into the stability evaluation criterion in such a manner that the slack variable becomes substantially zero when a solution to a stable trajectory is obtained under the constraint condition and a value equal to or greater than substantially zero is generated as the slack variable when the trajectory diverges under the constraint condition; and changing the positions of the contact points so as to cancel the generated value of the slack variable.
 3. The movement control method for a mobile robot according to claim 2, wherein when the slack variable is introduced into the constraint condition, the slack variable is introduced into an equation of equilibrium for a moment around an X-axis of a center of gravity of the mobile robot and into an equation of equilibrium for a moment around a Y-axis of the center of gravity of the mobile robot, the X-axis and the Y-axis being orthogonal to each other within a plane perpendicular to a Z-axis corresponding to a vertical direction.
 4. The movement control method for a mobile robot according to claim 2, wherein the prediction interval is separated into an unadjustable sub-interval including no contact points whose positions can be changed, and an adjustable sub-interval including one or more contact points whose positions can be changed, and a value equal to or greater than substantially zero is allowed to be generated as the slack variable only during the adjustable sub-interval.
 5. The movement control method for a mobile robot according to claim 2, wherein an expression for the constraint condition includes a center-of-gravity vertical trajectory of the mobile robot and a trajectory of a moment around the center of gravity of the mobile robot, and the trajectory generation step includes: temporarily setting the center-of-gravity vertical trajectory and the trajectory of the moment around the center of gravity of the mobile robot one time within the prediction interval; obtaining a solution to a function of the stability evaluation criterion one time under the constraint condition, and changing, based on an obtained result, the positions of the contact points so as to stabilize the motion of the mobile robot within the prediction interval and correcting the center-of-gravity vertical trajectory and the trajectory of the moment around the center of gravity of the mobile robot; and recalculating, at least one time, the solution to the function of the stability evaluation criterion by using the changed positions of the contact points, the corrected center-of-gravity vertical trajectory, and the corrected trajectory of the moment around the center of gravity.
 6. The movement control method for a mobile robot according to claim 2, wherein the trajectory is obtained within the prediction interval in the trajectory generation step, the mobile robot is driven by using data on a first point of the prediction interval as a current input value, and the trajectory generation step is repeated by advancing the prediction interval by a small amount of time.
 7. A mobile robot that moves while causing two or more mobile means to alternately contact the ground, the mobile robot comprising: a contact-point planning setting unit that sets contact-point planning using time-series data representing positions of contact points where the mobile means contact the ground; and a trajectory generation unit that generates a trajectory for a movement of the mobile robot while causing the mobile means to contact the ground on the contact points as set by the contact-point planning setting unit, wherein the trajectory generation unit changes the positions of the contact points when the trajectory diverges.
 8. The mobile robot according to claim 7, wherein the trajectory generation unit is configured to: construct a prediction model that describes a relationship between a control input to the mobile robot and a motion of the mobile robot, the prediction model representing a state change of the mobile robot in a prediction interval of a predetermined duration; obtain, in the prediction interval, time-series data on the control input to ensure the stability of the mobile robot, by using a predetermined stability evaluation criterion and a constraint condition based on a mechanical balance; obtain a trajectory of the mobile robot based on the obtained time-series data on the control input and the prediction model; introduce a slack variable for relaxing a constraint into the constraint condition; introduce a slack variable into the stability evaluation criterion in such a manner that the slack variable becomes substantially zero when a solution to a stable trajectory is obtained under the constraint condition and a value equal to or greater than substantially zero is generated as the slack variable when the trajectory diverges under the constraint condition; and change the positions of the contact points so as to cancel the generated value of the slack variable. 